这两个'belongs_to'语句之间有什么区别吗?

99m*_*les 4 ruby ruby-on-rails

belongs_to :keeper, :class_name => "Staff"
belongs_to "staff", :foreign_key => "keeper_id"
Run Code Online (Sandbox Code Playgroud)

在我的基本测试中,这些似乎做了完全相同的事情.
它们确实一样吗?
这个比那个好吗?

EmF*_*mFi 5

这两个语句定义了相同的关联.不同之处在于定义关联的类如何引用定义的关联.

调用belongs_to定义了调用类处理给定关系的新实例方法的整个过程.这些新方法基于belongs_to的第一个参数命名.与大多数其他Rails一样,ActiveRecord将使用从第一个参数派生的合理默认值来生成管理关联的方法.为belongs_to提供其他参数只会覆盖这些默认值.

实际上,它们除了名称之外都是相同的.这一切都取决于您的个人喜好.你宁愿是指与联想@model.keeper@model.staff

阅读Associations参考的belongs_to部分,以便更好地了解模型属于另一个模型时提供的方法以及如何使用belongs_to的选项.