我有以下型号推进活动记录加入
Items
Customisations
Property Maps
,象这样社团 -
**Customizations**
belongs_to :item
has_many :property_maps, as: :mappable
**Items**
has_many :customizations
has_many :property_maps, as: :mappable
**Property Maps**
belongs_to :mappable, polymorphic: true
我实现了一个相当不错的过滤系统,考虑到只是项和属性,像这样 -
def self.filter_in_properties(property_ids, group_name)
joins(:property_maps).joins('JOIN property_maps '+group_name+' ON '+group_name+'.mappable_id = items.id AND '+group_name+'.property_id IN ('+property_ids.to_s.tr('[', '').tr(']', '').tr('"', '') +')')
end
和我在控制器中调用它们 -
@items_without_pagination.filter_in_properties(params[:color_filter], 'color_filter').uniq
我该如何构建一个过滤系统,以便在例如用户搜索红色的颜色时,它不仅返回具有红色属性的项目,而且返回具有红色属性的自定义项目?