1
私にはProductCategory
とProduct
という2つのモデルがあります。 Product
モデルはProductCategory
に属し、製品カテゴリにはそれに応じて多くの製品が含まれます。場合によっては、具体的なProductCategory
に属するProduct
を返すフィルタを実装する必要がある場合があります。これらは私のモデルです:他のモデルに属するモデルをフィルタリングする
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
そして、私のコントローラで私はこのような何かを追加しました:
class ProductsController < ApplicationController
def index
if params[:product]
@products = Product.filter(params[:product][:product_category]
else
@products = Product.all
end
end
end
をしかし、私は実際に私のフィルタを使用する方法を管理することはできませんし、私はそれをたくさんリファクタリング必要がありますね。誰でも助けてくれますか?
クラスメソッドの代わりにスコープを使用することをお勧めします。 –
関連付けがある場合、なぜフィルタが必要ですか? 'category.products'を取得できます – Deep