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命令中,它指定为已经存在的索引创建额外的两组索引吗?
答案 0 :(得分:5)
请改为尝试:
$this->thing = $thing ?: new DefaultThing();
迁移会注释掉索引,大概是为了表明create_join_table会为你处理这个。
请注意,在rails 4中,表名必须按排序顺序排列。此外,在此示例中扩展了迁移名称,以便明确说明。其中会出现CreateJoinTable,这已足够。
答案 1 :(得分:1)
你只有两个索引,尽管索引可能比它应该更多。请参阅Index on multiple columns in RoR以解释数组语法以及如何更改t.index。