我有两个模型:ProductCategory
和Product
。 Product
模型属于ProductCategory
,产品类别可以相应地包含许多产品。我需要实现某种过滤器,它会返回属于特定Product
的{{1}}个过滤器。这些是我的模特:
ProductCategory
在我的控制器中我添加了这样的东西:
class ProductCategory < ActiveRecord::Base
has_many :products
end
class Product < ActiveRecord::Base
belongs_to :product_category
# Here I added some kind of filter method
# But I haven't managed how to use it yet
def self.filter(filter)
where(product_category_id: filter) if filter
end
end
但我实际上无法管理如何使用我的过滤器,我想我应该重构它。有人可以帮帮我吗?
答案 0 :(得分:1)
假设params[:product][:product_category]
是ProductCategory ID 。
class ProductsController < ApplicationController
def index
if params[:product]
@category = ProductCategory.find(params[:product][:product_category])
@products = @category.products
else
@products = Product.all
end
end
end
如果params[:product][:product_category]
不是 ID ,则使用find_by
代替find
。