在Ruby on Rails中,如何创建除主键之外的外键引用字段的关系?如何在迁移或模型类中执行此操作?我正在使用MySQL。
谢谢,
编辑:假设我有两个表A和B.在B中,我有一个名为name的字段,在A中我有b_name。我该如何指定
答案 0 :(得分:3)
您可以在表中设置作为外键的列名,如下所示:
Class ModelA < ActiveRecord::Base
has_many :models, foreign_key: 'another_id'
上面的关联说,models表有一个名为'another_id'的列。
详细了解各种选项in the docs。
答案 1 :(得分:3)
正如pavan
和emaillenin
所提到的,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
。