Rails创建连接表索引名称太长

时间:2017-06-04 08:20:21

标签: ruby-on-rails

因此,我尝试在表userslooking_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 tablerails约定为Table_A_Name_Table_B_Name,其列符合类似约定Table_A_idTable_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

1 个答案:

答案 0 :(得分:1)

  

... rails会有多对多关联实际使用它吗?

是否使用索引的选择由数据库优化器决定,并且不受Rails的影响。您可以在数据库强加的约束下将其命名为您喜欢的名称。