ポケモンと has_many の関係を持つトレーナー モデルがあります。特定のタイプまたはタイプのグループのポケモンを持っていないすべてのトレーナーを見つけるにはどうすればよいですか (タイプはポケモン モデルの列です)。
私が試したコードですが、彼のポケモンのタイプのいずれかがグループにない場合、トレーナーを返します(たとえば、トレーナーが火と電気のタイプのポケモンを持っている場合、電気が配列にないため、彼は返されます。私はドン火のポケモンを持っているので返してほしくありません。)
Trainer.joins(:pokemons).where("pokemons.type NOT IN (?)", ["fire","grass","water"])
1つのタイプと比較するだけでも同じ問題が発生します。
Trainer.joins(:pokemons).where("pokemons.type != ?", "fire")
繰り返しますが、例のトレーナーは、タイプがでんきで、火と等しくないポケモンを持っているため、返されます。
Rails 3.2.13 と Ruby 1.9.3 を使用しています。