通过迁移为HABTM创建Rails-4预期表和列名称的正确方法?

时间:2013-11-13 04:10:30

标签: ruby-on-rails ruby-on-rails-4 rails-migrations

我需要item_onesitem_twos的HABTM联接表,但我似乎无法获得符合Rails预期的迁移结果。如果我这样做:

create_join_table :item_ones, :item_twos do |t|
   ...
end

(...这是rails g migration CreateJoinTableOneTwo item_one item_two生成的......)

..然后它会创建一个名为item_ones_item_twos的表,但Rails会查找item_ones_twos(因为在4.0中,它是factors out common prefixes)。如果我这样做:

create_join_table :item_ones, :twos do |t|
  ...
end

然后它创建了正确的表,但第二个外键名为two_id而不是item_two_id

那么除了例如,还有什么方法可以做到这一点。手动指定:table_name

1 个答案:

答案 0 :(得分:0)

通常,对于任何HABTM连接表,Rails都会期望连接表名称为<first model>s_<second model>s(例如assemblies_parts)。但是,因为ItemOne和ItemTwo具有相同的前缀(Item),Rails会将所需的表名缩短为item_ones_twos

您需要指定table_name选项,详见此处:http://edgeguides.rubyonrails.org/migrations.html#creating-a-join-table