Ruby on Rails指导Activerecord关联文档不正确?

Vla*_*lad 18 activerecord ruby-on-rails ruby-on-rails-3

哇,我一直是这样挣扎了整整一天,下面就以"官方"红宝石导轨导向的文件,才发现,原来我可能已经通过文件一直误导.我只想确认这是否属实.

如果你去http://guides.rubyonrails.org/association_basics.html和2.10.自我加入部分它说:

class Employee < ActiveRecord::Base
  has_many :subordinates, :class_name => "Employee"
  belongs_to :manager, :class_name => "Employee",
    :foreign_key => "manager_id"
end
Run Code Online (Sandbox Code Playgroud)

现在,我是一个新手,只是相信这段代码(我还能做什么?)并编写了一些代码,这是这种自我连接案例的变体.然而,我看得越多,感觉就越不对劲.不:subordinates应该有:foreign_key场而不是:manager?无论如何我只是改变它,以便代码是这样的:

class Employee < ActiveRecord::Base
  has_many :subordinates, :class_name => "Employee", :foreign_key => "manager_id"
  belongs_to :manager, :class_name => "Employee"
end
Run Code Online (Sandbox Code Playgroud)

现在它正在发挥作用.我错过了什么吗?或者官方文件是错的?很难相信官方文件会提供不正确的信息,但也许就是这样.

yba*_*kos 1

没错,在撰写本文时该指南文档是不正确的。

belongs_to不需要该选项:foreign_key,因为 AR 会manager_id根据协会的名称(“经理”)进行推断。@dwight如文档所述,当 Employee尝试执行以下操作时,AR 会引发错误,因为 AR 将在 SELECT 语句的 WHERE 条件中@dwight.subordinates使用。employee_id

根据AR 文档:foreign_key,将选项传递给has_many会导致声明在生成 的查询时将使用的 FK @dwight.subordinates