私はテーブルハウス、会社、通り、ハウスタイプと関連モデルがあります。モデルとビューのフィルタ
各ハウスは、当社、HouseTypeとストリートに属し
はまた、私はすでにハウスモデルで正しいスコープのメソッドを持っています:
scopes: belong_to_company, on_street, with_type
これは、ビューにフィルタを作成する必要があります。しかし、ユーザーがフィルタで複数のオプションを選択できる可能性があります。彼はいくつかの通りをマークすることができ、またいくつかのHouseTypesといくつかの会社をマークすることができます。
だから私は、家のモデルで、このようなメソッドを追加します。
def self.filter_for_types(company, street, types)
houses = []
each.types do |type|
houses = houses + House.belong_to_company(company).on_street(street).with_type(type)
end
houses.uniq
end
def self.filter_for_streets(company, streets, types)
houses = []
each.streets do |street|
houses = houses + House.filter_for_types(company, street, types)
end
houses.uniq
end
def self.filter(companies, streets, types)
houses = []
each.companies do |company|
houses = houses + House.filter_for_streets(company, streets, types)
end
houses.uniq
end
だから、ビューで、私はそれにいくつかあります
def index
House.filter(params[:companies], params[:streets], params[:types])
end
を、私は私のコードは非常によくないと思われます。 私はモデルで何ができますか?(スコープにすべてのコードを入れてください - 良い考えですか?)
このようなビュー生成にはかなりのプラグインがありますか?