# engine.rb
has_many :pistons
#piston.rb
belongs_to :engine
Kolben hat eine Spalte, piston_count
und, natürlich, engine_id
Abfrage has_many Beziehung enthält diese und auch diese
Meine Datenbank hat die folgenden 7 Datensätze
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>]
Ich möchte schreiben Abfrage, die besagt, geben Sie die Engine
enthält Pistons mit einer piston_count
1
und enthält auch eine piston_count
2
Ich habe versucht ... engines = Engine.joins (: Kolben) .merge (Piston.where (piston_count: 1)) # => [#, #] engines.joins (: Kolben). Zusammenführen (Kolben.where (pub_count: 2)) # => []
Es gibt ein leeres Array zurück, weil der aktive Datensatz das in eine AND-Klausel verwandelt. Wenn ich jedoch eine OR-Anweisung mache, gibt es zu viele Datensätze zurück. Irgendwelche Gedanken?