Ruby on Rails指导Activerecord关联文档不正确?
哇我一直在努力解决这个问题,跟随rails指南文件中的“官方”ruby,并且发现我可能一直被文档误导。 我只想确认这是否属实。
如果你去http://guides.rubyonrails.org/association_basics.html和2.10。 自我加入部分它说:
class Employee "Employee" belongs_to :manager, :class_name => "Employee", :foreign_key => "manager_id" end
现在,我是一个新手,只是相信这段代码(我还能做什么?)并编写了一些代码,这是这种自我连接案例的变体。 然而,我看得越多,感觉就越不对劲。 不是:subordinates
应该有:foreign_key
字段而不是:manager
? 无论如何我只是改变它,以便代码是这样的:
class Employee "Employee", :foreign_key => "manager_id" belongs_to :manager, :class_name => "Employee" end
现在它正在发挥作用。 我错过了什么吗? 或者官方文件是错的? 很难相信官方文件会提供不正确的信息,但可能就是这样。
没错, 在撰写本文时, 指南文件不正确。
belongs_to
不需要:foreign_key
选项,因为AR将从关联名称(“manager”)推断manager_id
。 如文档所述,当一个Employee @dwight
尝试@dwight.subordinates
时,AR会引发错误,因为AR会在SELECT语句的WHERE条件中使用employee_id
。
根据AR文档将:foreign_key
选项传递给has_many
导致声明在为@dwight.subordinates
生成查询时将使用的FK。