按属性值过滤has_many

时间:2013-03-22 18:42:42

标签: ruby-on-rails activerecord

我正在尝试找到过滤has_many关联中对象的最佳解决方案。我的设置是

class Company < ActiveRecord::Base
  has_many :products
end

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

然后在我的CompaniesController#show方法中,我想做的是按照标题过滤产品。

def show
  @company = Company.find(params[:id])
  # Then I just want the @company.products where title = params[:title]
end

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

 @products = @company.products.where("title = ?", params[:title])

编辑: 将相关产品存储在@company变量中会有问题,因为@company将包含一组关联产品(而不是Company对象),这不仅限制了您可以从show中访问有关特定公司的信息。变量,它也变得混乱(例如,您使用名为@company的变量来存储与公司关联的产品列表)