2017-02-10 44 views
1

我試圖篩選基於2個標籤的產品列表,通過篩選子記錄模式的2個實例軌記錄

class Product < ActiveRecord::Base 
    has_many :tags 
end 

class Tag < ActiveRecord::Base { 
      :id => :integer, 
    :created_at => :datetime, 
    :updated_at => :datetime, 
     :key => :string 
} 

我如何格式化查詢語句,讓我找到一種產品,有2個標籤,其中一個鑰匙'易碎',一個鑰匙'易腐'?

+0

你只想要它是否有這兩個標籤?甚至只有一個標籤 –

+0

,如果它有兩個標籤 –

+0

您是否使用postgresql? –

回答

1
Product.joins(:tags).where("tags.key IN (?)", ['fragile', 'perishable']).group('products.id').having('COUNT(tags.id) = ?', 2) 
+0

謝謝!這也適用於計算products.id。 –

+2

'WHERE ... IN'子句中更習慣的方式是: '''ruby .where(tags:{key:['fragile','perishable']}) ''' – bluehavana