我正在尝试使用Rails 4和Simple Form制作应用程序。
我有三个模型,分别是:项目,范围和背景。
项目有一个范围。范围有一个背景。范围属于项目。背景属于范围。 Project接受Scope的嵌套属性。 Scope接受背景的嵌套属性。
Project.rb:has_one:scope accepts_nested_attributes_for:scope
Scope.rb:
belongs_to:项目 accepts_nested_attributes_for:background
Background.rb
belongs_to:scope
项目控制器允许使用范围参数。此外,项目控制器内允许使用背景属性(作为范围属性)。
后台控制器也允许使用背景参数。
每个控制器中允许的参数包括自身的ID和它所属的模型。
所以在:
后台控制器,允许的参数包括:scope_id和:background_id) 范围控制器,允许的参数包括:project_id
我试图通过其project_id找到背景。
当我输入:
Background.where(:project_id => 95)
我收到错误。我的后台表中没有project_id外键(因为后台属于范围)。
如何在rails控制台中搜索嵌套属性?
答案 0 :(得分:0)
我认为你可以实现这一目标的一种方法是首先通过project_id找到范围,然后从那里获得该范围的背景(因为范围有一个背景):
scope = Scope.where(:project_id => 95).take
background = scope.background
您可以将它们链接在一起:
Scope.where(:project_id => 95).take.background
(注意,我们没有对代码进行过测试,所以如果有效,请告诉我们)
希望这有帮助!
答案 1 :(得分:0)
一种方法可能是
Background.includes(:scope).where('scopes.project_id = ?', 95).references(:scope).first