过滤属于其他模型的模型

时间:2016-11-03 08:14:39

标签: ruby-on-rails ruby filter

我有两个模型:ProductCategoryProductProduct模型属于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

但我实际上无法管理如何使用我的过滤器,我想我应该重构它。有人可以帮帮我吗?

1 个答案:

答案 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