我的Product
模型中有这种关系:
has_many :features, :class_name => 'ProductFeature', :source => :product_feature, :include => :feature
所以我可以Product.features
效果很好。但我希望能够在feature
必要时按表中的字段过滤它。例如在伪代码中:
find all product features where feature is comparable
compare
是 上的布尔字段feature
。
我已经尝试了 2 个小时,但无法弄清楚(没有完全编写新查询)。我不知道如何feature
从关系中访问表的字段Product.features
,因为它似乎只能过滤product_features
字段。
到目前为止,这是我想出的:
def features_compare
features.feature.where(:compare => true)
end
但它只是说feature
这不是一个有效的方法,我理解。
编辑
我已经更新了我的模型,因此关系更加清晰:
产品.rb:
class Product < ActiveRecord::Base
belongs_to :company
belongs_to :insurance_type
has_many :product_features
has_many :reviews
attr_accessible :description, :name, :company
end
product_feature.rb:
class ProductFeature < ActiveRecord::Base
belongs_to :product
belongs_to :feature
delegate :name, :to => :feature
attr_accessible :value
end
特征.rb
class Feature < ActiveRecord::Base
attr_accessible :name, :compare
end
我希望能够查询product_features
属于 aproduct
和feature
where Feature.compare
is 的true
。像这样的东西:
产品.rb
def features_compare
product_features.where(:compare => true)
end
这会引发错误,因为compare
在Feature
模型中,不是ProductFeature
. 我在 product_feature.rb 中尝试了以下内容:
delegate :compare, :to => :feature
但我没有帮助。
我将在几个小时内为此添加赏金,所以请帮助我!