有效地创建连接表迁移

时间:2014-01-10 01:22:36

标签: ruby-on-rails database-migration

 rails g migration CreateJoinTable zombie:index role:index

这会创建此迁移:

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

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

2 个答案:

答案 0 :(得分:5)

请改为尝试:

$this->thing = $thing ?: new DefaultThing();

迁移会注释掉索引,大概是为了表明create_join_table会为你处理这个。

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

答案 1 :(得分:1)

你只有两个索引,尽管索引可能比它应该更多。请参阅Index on multiple columns in RoR以解释数组语法以及如何更改t.index。