1

item_ones我需要一个用于and的 HABTM 连接表item_twos,但我似乎无法获得符合 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 中,它会排除常见的前缀)。如果我这样做:

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

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

那么除了手动指定 a 之外,还有什么方法可以做到这一点:table_name

4

1 回答 1

0

通常,Rails 期望任何 HABTM 连接表的连接表名称为<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

于 2013-11-13T04:20:27.497 回答