首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >关于Activerecord关联的Ruby on Rails指南文档不正确吗?

关于Activerecord关联的Ruby on Rails指南文档不正确吗?
EN

Stack Overflow用户
提问于 2012-03-23 14:58:50
回答 1查看 590关注 0票数 18

哇,我已经在这个问题上挣扎了一整天,遵循了“官方的”ruby on rails指南文档,然后才发现我可能一直被这个文档误导了。我只想确认一下这是不是真的。

如果你去http://guides.rubyonrails.org/association_basics.html和低于2.10。self joins部分写道:

class Employee < ActiveRecord::Base
  has_many :subordinates, :class_name => "Employee"
  belongs_to :manager, :class_name => "Employee",
    :foreign_key => "manager_id"
end

现在,我是一个新手,只相信这段代码(我还能做什么呢?)并编写了一些代码,这些代码是这种自连接情况的变体。然而,我看得越多,就越觉得不对劲。: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

现在它起作用了。我是不是遗漏了什么?或者是官方文件错了?很难相信官方文件会提供不正确的信息,但也许事实就是这样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-01 04:08:02

没错,在撰写本文时,the guide document是不正确的。

belongs_to不需要:foreign_key选项,因为AR将从关联的名称(“manager_id”)推断经理。正如文档所述,在给定雇员@dwight用户尝试@dwight.subordinates时,AR将引发错误,因为AR将在SELECT语句的WHERE条件中使用employee_id

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9835239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档