Ruby on rails 筛选器按属性值具有多个属性

Ruby on rails 筛选器按属性值具有多个属性,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正试图找到一个最佳的解决方案来过滤有很多关联的对象。我的设置是 class Company < ActiveRecord::Base has_many :products end class Product < ActiveRecord::Base attr_accessible :title belongs_to :company end 非常感谢您的帮助。您的控制器操作从哪里获得产品标题(params[:title])?如果您只是将其作为通过表单提交的搜索词传递

我正试图找到一个最佳的解决方案来过滤有很多关联的对象。我的设置是

class Company < ActiveRecord::Base
  has_many :products
end

class Product < ActiveRecord::Base
  attr_accessible :title
  belongs_to :company
end

非常感谢您的帮助。

您的控制器操作从哪里获得产品标题(params[:title])?如果您只是将其作为通过表单提交的搜索词传递,那么您应该能够运行类似于

 @products = @company.products.where("title = ?", params[:title])
编辑:
将关联产品存储在@company变量中会有问题,因为此时@company将包含一个关联产品数组(而不是一个company对象),这不仅限制了您可以从该变量在show action中访问有关特定公司的信息,而且会使人感到困惑(例如,您使用名为@company的变量来存储与公司关联的产品列表)

这是我的CompanyController中的show方法。我只想返回@company实例。有什么原因不能创建一个单独的实例变量来存储关联的产品吗?那么你的意思是要存储关联的(过滤的)产品@company中的产品?完全正确,如果可能的话,但我想这样做也能实现我想要的。啊,我明白你的意思。但是,我认为这种方法可能会给你带来一些问题。我编辑了我之前的回答,并解释了我为什么这么认为。“Filterrific”rails gem是一个很好的工具,可以做到这一点。文档有一页关于构建ActiveRecord作用域以按多个关联的属性进行筛选:
 @products = @company.products.where("title = ?", params[:title])