【问题标题】:Ruby rails generate migration commond to add Index on multiple columns in Ruby on RailsRuby rails 生成迁移命令以在 Ruby on Rails 中的多个列上添加索引
【发布时间】:2020-04-14 02:51:36
【问题描述】:

我是新的 Ruby on Rails。我试图在现有项目的多个列上添加索引。在互联网上,我看到可以添加它的示例,如下所示。但我无法理解如何生成迁移脚本来添加索引。任何帮助将不胜感激。

add_index :facility_user_assignments, [:facility_id, :user_id], unique: true.

以下是我在网上找到的。如何将其更改为添加到多个列

rails generate migration AddIndexToPhoneToUsers phone:string:uniq

提前致谢。

【问题讨论】:

    标签: ruby-on-rails indexing migration add


    【解决方案1】:

    大多数迁移无法通过 CLI 生成。相反,您应该只生成一个空迁移,然后手动填写 change 方法。

    rails generate migration AddIndexToPhoneToUsers
    

    【讨论】:

    • 感谢您的即时回复。因此,我可以直接创建下面的类文件,而不是使用 CLI 生成空迁移:class AddIndexToFacilityUserAssignmentToUserToFacility
    • 如上所述,我尝试手动添加迁移类。我在 rake db migrate NameError: uninitialized constant AddIndexToFacilityUserAssignmentToUserToFacility 上遇到错误
    • 迁移的文件名是什么?它是否遵循 Ruby 标准命名约定?
    • @sg_developer 不,你不应该只创建一个类,你应该使用我在答案中包含的命令来生成文件和空类,以便它们的命名一致且正确。跨度>
    【解决方案2】:

    使用:

    rails generate migration addIndicesToPhone phone:string:uniq

    然后转到您的迁移文件“add_indices_to_phone.rb”并在迁移之前添加您想要的任何字段。

    class AddIndicesToPhone < ActiveRecord::Migration
      def change
        add_column :phone, :string
        add_column :another_field, :string # add these fields manually
      end
    
      add_index :phone, :phone, unique: true
      add_index :phone, :another_field, unique: true  # add these fields manually
    end
    

    我希望这就是你要找的。​​p>

    【讨论】:

    • 感谢您的回复。我已经在项目中添加了列,所以我可以直接在类文件下面创建而不是生成迁移文件:class AddIndexToFacilityUserAssignmentToUserToFacility
    猜你喜欢
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2015-08-12
    相关资源
    最近更新 更多