我有這個關係的關係在我Product
模型:過濾Rails中
has_many :features, :class_name => 'ProductFeature', :source => :product_feature, :include => :feature
所以我可以做Product.features
工作正常。但是我希望能夠在需要時根據feature
表中的字段進行過濾。例如,在僞碼:
find all product features where feature is comparable
compare
是在feature
一個bool字段。
我一直試圖堅持2個小時,並且無法弄清楚(無需完全寫入新的查詢)。我不知道如何訪問Product.features
關係中feature
表的字段,因爲它似乎只能在product_features
字段上進行過濾。
這是我想出迄今:
def features_compare
features.feature.where(:compare => true)
end
但它只是說feature
不是一個有效的方法,我明白了。
編輯
我已經更新我的模型,這樣的關係更加清晰:
product.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
feature.rb
class Feature < ActiveRecord::Base
attr_accessible :name, :compare
end
我希望能夠查詢屬於一個product
和feature
其中Feature.compare
是true
的product_features
。事情是這樣的:
product.rb
def features_compare
product_features.where(:compare => true)
end
這將引發在Feature
模式,而不是ProductFeature
一個錯誤,因爲compare
。我在product_feature.rb中嘗試過以下內容:
delegate :compare, :to => :feature
但我沒有幫助。
我會在幾個小時內爲此添加賞金,所以請幫助我!
我很困惑應用程序的組織。因此,您有一個功能表和一個product_features表,以及一個功能模型和一個ProductFeature模型? –
另外,你不需要:source屬性,因爲'has_many:features'不是'has_many:through'關聯。 –
我開始懷疑你需要':include =>:feature'部分,除非ProductFeature有一個特性。 –