使用has_many关系rails的连接

时间:2013-07-29 22:37:28

标签: ruby-on-rails has-many

我有一个与Pokemon有一个has_many关系的Trainer模型。在口袋妖怪模型中,有一个trainer_id字段和一个物种字段。我想要检索所有有一个口袋妖怪的训练师记录,其中包含一种'Mew'和另一种口袋妖怪,其中有一种'Arcanine'。

我的尝试不起作用:

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

1 个答案:

答案 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'")