Rails - 在控制台中搜索

Rails - searching in the console

我正在尝试使用 Rails 4 和 Simple Form 制作一个应用程序。

我有三个模型,分别是:项目、范围和背景。

项目只有一个范围。范围有一个背景。范围属于项目。背景属于范围。 Project 接受 Scope 的嵌套属性。 Scope 接受背景的嵌套属性。

Project.rb:has_one:范围accepts_nested_attributes_for:范围

Scope.rb:

belongs_to:项目 accepts_nested_attributes_for:背景

Background.rb

belongs_to:范围

范围参数在项目控制器中是允许的。此外,项目控制器内部允许使用背景属性(作为范围属性)。

后台控制器也允许后台参数。

每个控制器中允许的参数包括其自身及其所属模型的 ID。

所以在:

后台控制器,允许的参数包括:scope_id和:background_id) 范围控制器,允许的参数包括:project_id

我正试图通过 project_id 找到背景。

当我输入时:

 Background.where(:project_id => 95)

我收到一个错误。我的后台没有project_id外键table(因为后台属于作用域)。

如何在 rails 控制台中搜索嵌套属性?

我认为您可以完成此操作的一种方法是首先通过 project_id 找到范围,然后从那里获取该范围的背景(因为范围有一个背景):

scope = Scope.where(:project_id => 95).take
background = scope.background

您可以将它们链接在一起:

Scope.where(:project_id => 95).take.background

(注意,还没有测试代码,所以请告诉我这是否有效)

希望对您有所帮助!

一种方法可以是

Background.includes(:scope).where('scopes.project_id = ?', 95).references(:scope).first