有效地创建连接表迁移

Sta*_*ers 2 ruby-on-rails database-migration

 rails g migration CreateJoinTable zombie:index role:index
Run Code Online (Sandbox Code Playgroud)

这会创建此迁移:

class CreateJoinTable < ActiveRecord::Migration
  def change
    create_join_table :zombies, :roles do |t|
      t.index [:zombie_id, :role_id]
      t.index [:role_id, :zombie_id] # I'd be happy if it didn't have this!
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

迁移几乎就在那里,但为什么我有四个索引而不是两个?在我的generate命令中,它指定为已经存在的索引创建额外的两组索引?

Phi*_*hil 5

试试这个:

rails g migration CreateJoinTableRolesZombies roles zombies
Run Code Online (Sandbox Code Playgroud)

迁移会注释掉索引,可能是为了表明create_join_table会为您处理此问题.

请注意,在rails 4中,表名必须按排序顺序排列.此外,在此示例中扩展了迁移名称,以便明确说明.CreateJoinTable出现在其中,这就足够了.