-1
# engine.rb
has_many :pistons
#piston.rb
belongs_to :engine
活塞有一欄,piston_count
,當然,engine_id
查詢的has_many關係,包含了這一點,也該
我的數據庫具有以下7條
Engine.all
#=> [#<Engine id: 1>, #<Engine id: 2>, #<Engine id: 3>]
Piston.all
#=> [#<Piston id: 1, engine_id: 1, piston_count: 1>, #<Piston id: 2, engine_id: 1, piston_count: 2>, #<Piston id: 2, engine_id: 2, piston_count: 1>, #<Piston id: 2, engine_id: 3, piston_count: 2>]
我想寫一個查詢說,返回Engine
含有活塞與piston_count
的1
還包含piston_count
的2
我試過... engines = Engine.joins(:pistons).merge(Piston.where(piston_count:1)) #=> [#,#] engines.joins(:pistons)。 merge(Piston.where(piston_count:2)) #=> []
它返回一個空數組,因爲活動記錄將其轉換爲一個AND子句。但是,如果我執行OR語句,它將返回太多記錄。有什麼想法嗎?