在我的ROR應用程序中,我擁有模型Category,Item,Property和PropertyValuation。 這個想法是一個類別包含項目,一個項目有幾個屬性。 PropertyValuation的目的是存儲特定項目的屬性值。該模型的定義如上:Ruby on Rails:基於幾種條件的模型上的過濾器關聯
class Category < ActiveRecord::Base
attr_accessible :name, :description, :parent, :children, :items, :parent_id
has_many :children, :class_name => "Category", :foreign_key => "parent_id", :dependent => :nullify
belongs_to :parent, :class_name => "Category"
has_many :categorizations
has_many :items, :through => :categorizations
end
class Item < ActiveRecord::Base
attr_accessible :name, :description, :property_valuations, :barcode
has_many :property_valuations, :dependent => :destroy
has_many :properties, :through => :property_valuations
has_many :categorizations
has_many :categories, :through => :categorizations
end
class Property < ActiveRecord::Base
attr_accessible :name, :description, :value_type, :unit, :unit_id
has_many :property_valuations, :dependent => :destroy
has_many :items, :through => :property_valuations
has_many :property_ranges, :dependent => :destroy
belongs_to :unit
end
class PropertyValuation < ActiveRecord::Base
attr_accessible :property, :item, :value, :categorization
belongs_to :property
belongs_to :item
end
現在我的問題,我已經成功地設法這樣做是爲了過濾通過名稱類項目:
@category.items.where("lower(items.name) like ?", "%#{params[:keywords].downcase}%")
但現在我也想過濾取決於這些項目關聯的屬性值。 示例:我想要名稱中包含「foo」的類別項目,並且其中屬性「A」的值爲1,屬性B的值爲2,依此類推。 我該如何實現這樣的查詢?
但在我的情況下,我收到屬性ID和每個值(精確值,或最小值或最大值),這個想法是動態構建查詢。給定我的模型,我該如何做這個例子:我想要名稱包含「foo」的項目,並且id = 1的屬性值爲2,id = 2的屬性值<10,id = 8的屬性值> 2且值<5? – Rui 2013-04-07 17:56:55