ruby-on-rails - 对于 ActiveRecord 一对多关联,其中 :foreign_key option should I set?

标签 ruby-on-rails ruby activerecord

ActiveRecord 的has_manybelongs_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/

相关文章:

ruby - 如何在 coffeescript 模板中访问 sinatra 类变量

ruby - 将值传递到使用 Class.new 创建的类中

ruby-on-rails - ActiveRecord 查询每天的新用户数

ruby-on-rails - 执行 Rails 命令的速度非常低

ruby-on-rails - Bootstrap 日期选择器 : global default date format

ruby-on-rails - Controller 中的 Rails 5 实例级助手方法无法识别助手。方法

ruby - 为 Sinatra 应用程序连接到现有的 Heroku Postgres DB

ruby-on-rails - 将 Rails 中的主键更改为字符串

mysql - Rails 虚拟属性与 ActiveRecord

ruby-on-rails - 在 Rails 中,什么会导致一个用户拥有另一个用户的 session ?