如何通过Rails3中的has_one关联找到孩子的父母?

Yuv*_*rmi 3 ruby-on-rails associations has-one belongs-to ruby-on-rails-3

说我有以下型号:

class Parent < ActiveRecord::Base
  has_one :child
end

class Child < ActiveRecord::Base
  belongs_to :parent
end
Run Code Online (Sandbox Code Playgroud)

我想通过孩子来检索父母,但是做以下操作失败了:我通过控制器以下列方式找到模型

@child = Child.find(params[:child_id])
Run Code Online (Sandbox Code Playgroud)

(不确定这是否相关,但由于我使用的是浅路由,因此URL中没有parent_id)

在我看来,我想像这样检索孩子的父母:

@child.parent
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

谢谢!


更新:我的例子(当我决定启动一个新的应用程序并创建它时)实际上运行得很好.在我的实际应用程序中,我忘了包含belongs_to :parent在孩子的模型中.我有多傻.感谢您抽出时间发表评论并回答,伙计们.下次我在这里发布问题之前会仔细查看.

von*_*rad 9

这正是你如何做到的.

事实上它不起作用表明存在一些阻碍@child父母拥有的潜在问题.

首先,检查表是否Child有外键.外键列(在本例中parent_id)应始终位于具有belongs_to关联的模型上.

其次,检查您提取的孩子是否实际拥有父母.这意味着外键(parent_id)不应该是nil.如果它有一个数值,请检查表中是否Parent有一个与foreign_key具有相同值的记录Child.

您还可以使用Rails控制台(rails console来自您的应用程序目录)来仔细检查关联.做Child.first.parent,看看发生了什么.当然,您可以开始使用变体,例如,Parent.first.child或者Child.find(123).parent您也可以使用params.