0

我有一个与 Pokemon 有 has_many 关系的 Trainer 模型。在 Pokemon 模型中,有一个 trainer_id 字段和一个 species 字段。我想检索所有具有“Mew”种类的口袋妖怪和具有“Arcanine”种类的口袋妖怪的所有训练师记录。

我的尝试不起作用:

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

1 回答 1

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'")
于 2013-07-29T22:40:21.920 回答