我正在尝试找到过滤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
非常感谢任何帮助。
答案 0 :(得分:0)
您的控制器操作从哪里获取产品标题(params [:title])?如果您只是将其作为通过表单提交的搜索词传入,那么您应该可以运行类似....
@products = @company.products.where("title = ?", params[:title])
编辑: 将相关产品存储在@company变量中会有问题,因为@company将包含一组关联产品(而不是Company对象),这不仅限制了您可以从show中访问有关特定公司的信息。变量,它也变得混乱(例如,您使用名为@company的变量来存储与公司关联的产品列表)