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
我正在尝试使用 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