2013-07-29 60 views
0

我有一個與口袋妖怪has_many關係的教練模型。在寵物小精靈模型裏面,有一個trainer_id字段和一個物種字段。我想檢索所有的訓練師記錄,其中有一個口袋妖怪與'喵'種類和另一個口袋妖怪與'Arcanine'物種。使用加入has_many關係rails

我嘗試不工作:

Trainer.joins(:pokemon).where(:pokemon => {:species => 'Mew', :species => 'Arcanine' }) 

回答

1

請試試這個:

Trainer.joins(:pokemon).where("pokemons.species in ('Mew', 'Arcanine')") 

我想這個問題與您的查詢Trainer.joins(:pokemon).where(:pokemon => {:species => 'Mew', :species => 'Arcanine' })是它做一個and,而不是或。如果你想in另一種語法如下:

Trainer.joins(:pokemon).where(:pokemon => {:species => ['Mew', 'Arcanine'] }) 

更新:

如果你想和選項,那麼請嘗試以下方法:

Trainer.joins(:pokemon).where("pokemons.species = 'Mew' and pokemons.species = 'Arcanine'") 
+0

即返回培訓師,如果他們有一個或其他或兩者。我需要找到那兩個都有的。 – notblakeshelton

+0

@notblakeshelton,請看我更新的答案。 – vee

+0

我想通了。顯然我在尋找數字,他們不應該在引號中。你的第二個可以使用字符串,比如我的例子。感謝ya mate。願你的劍保持鋒利,你的馬駒會很快。 – notblakeshelton