Ruby on Rails - 引用索引而不是主键的外键

时间:2014-05-03 09:58:35

标签: mysql ruby-on-rails foreign-key-relationship

在Ruby on Rails中,如何创建除主键之外的外键引用字段的关系?如何在迁移或模型类中执行此操作?我正在使用MySQL。

谢谢,

编辑:假设我有两个表A和B.在B中,我有一个名为name的字段,在A中我有b_name。我该如何指定

3 个答案:

答案 0 :(得分:3)

您可以在表中设置作为外键的列名,如下所示:

Class ModelA  < ActiveRecord::Base
    has_many :models, foreign_key: 'another_id'

上面的关联说,models表有一个名为'another_id'的列。

详细了解各种选项in the docs

答案 1 :(得分:3)

正如pavanemaillenin所提到的,foreign_key arg是您所需要的,但是,我想强调一点,为了让它发挥作用,我会&#39;我们发现你必须将它应用于协会的两个部分:

#app/models/user.rb
Class User < ActiveRecord::Base
    has_many :posts, foreign_key: "post"
end

#app/models/post.rb
Class Post < ActiveRecord::Base
    belongs_to :user, foreign_key: "post"
end

要在migration / db中引用,您只需将____id列替换为另一列。仍然是一个整数等,除了它有一个不同的名称

答案 2 :(得分:2)

您可以通过foreign_key级别

中的Model选项进行设置
class A < ActiveRecord::Base

  belongs_to :B, foreign_key: 'some_other_column'

end

如果您尚未指定foreign_key选项,则Rails默认会查找B_id