因此,我尝试在表users
和looking_for_options
之间创建联接表。
这是我的迁移文件:
class CreateJoinTableOptionsUsers < ActiveRecord::Migration[5.0]
def change
create_join_table :looking_for_options, :users do |t|
t.index [:looking_for_option_id, :user_id]
t.index [:user_id, :looking_for_option_id]
end
end
end
但是我收到了这个错误:
索引名称&#39; index_looking_for_options_users_on_looking_for_option_id_and_user_id&#39;在桌子上&#39; looking_for_options_users&#39;太长;林 它是64个字符
了解join table
,rails
约定为Table_A_Name_Table_B_Name
,其列符合类似约定Table_A_id
和Table_B_id
。
如何为joint table
指定较短的列名,以便它不会中断rails
多对多关联?
更新
我发现我只能给索引一个不同的名称。但是rails
多对多关联会实际利用它吗?
class CreateJoinTableOptionsUsers < ActiveRecord::Migration[5.0]
def change
create_join_table :looking_for_options, :users do |t|
t.index [:looking_for_option_id, :user_id], name: 'option_user'
t.index [:user_id, :looking_for_option_id], name: 'user_option'
end
end
end
答案 0 :(得分:1)
... rails会有多对多关联实际使用它吗?
是否使用索引的选择由数据库优化器决定,并且不受Rails的影响。您可以在数据库强加的约束下将其命名为您喜欢的名称。