ActiveRecord 的has_many
和belongs_to
方法都采用:foreign_key
选项。如果我需要用它来处理非标准的 FK 列名,我应该为父模型 (has_many
)、子模型 (belongs_to
) 或两者设置它,还是重要吗?
最佳答案
你应该在两者上设置 :foreign_key
选项。
考虑以下两个模型:
class Article < ActiveRecord::Base
has_many :comments, :foreign_key => "articleID"
end
class Comment < ActiveRecord::Base
belongs_to :article, :foreign_key => "articleID"
end
在 Article
类中声明 has_many
允许您执行以下操作:
Article.find(12).comments # Finds all comments with comment.articleID == 12
Comment
模型中的 belongs_to
方法调用允许:
Comment.last.article # Finds article with article.id == comment.articleID
如您所见,在这两种情况下都使用了外键。如果在任一位置省略,该特定关联代理将无法正常工作。
关于ruby-on-rails - 对于 ActiveRecord 一对多关联,其中 :foreign_key option should I set?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/860595/