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。