Rails - 在控制台中搜索

时间:2015-06-15 02:39:02

标签: ruby-on-rails rails-console

我正在尝试使用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控制台中搜索嵌套属性?

2 个答案:

答案 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