我有一个与 Pokemon 有 has_many 关系的 Trainer 模型。在 Pokemon 模型中,有一个 trainer_id 字段和一个 species 字段。我想检索所有具有“Mew”种类的口袋妖怪和具有“Arcanine”种类的口袋妖怪的所有训练师记录。
我的尝试不起作用:
Trainer.joins(:pokemon).where(:pokemon => {:species => 'Mew', :species => 'Arcanine' })
我有一个与 Pokemon 有 has_many 关系的 Trainer 模型。在 Pokemon 模型中,有一个 trainer_id 字段和一个 species 字段。我想检索所有具有“Mew”种类的口袋妖怪和具有“Arcanine”种类的口袋妖怪的所有训练师记录。
我的尝试不起作用:
Trainer.joins(:pokemon).where(:pokemon => {:species => 'Mew', :species => 'Arcanine' })
请试试这个:
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'")