我有一个与Pokemon有一个has_many关系的Trainer模型。在口袋妖怪模型中,有一个trainer_id字段和一个物种字段。我想要检索所有有一个口袋妖怪的训练师记录,其中包含一种'Mew'和另一种口袋妖怪,其中有一种'Arcanine'。
我的尝试不起作用:
Trainer.joins(:pokemon).where(:pokemon => {:species => 'Mew', :species => 'Arcanine' })
答案 0 :(得分: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'")