class Game < ActiveRecord::Base
has_many :game_types, :dependent => :destroy
has_many :types, :through => :game_types
end
class Type < ActiveRecord::Base
has_many :game_types, :dependent => :destroy
has_many :games, :through => :game_types
end
游戏类型1 ==单人游戏 游戏类型2 ==多人游戏
如何查询类型ID为1或2或两者的游戏?
此外,我如何查询没有的游戏?
这通过will_paginate与分页一起使用,因此单个查询更可取。
提前感谢您拯救我的理智。
答案 0 :(得分:3)
在rails中,您总是可以使用简单的SQL。 OR尚未在Arel中完全实现(我最后检查过),所以你想要的是这样的:
Game.joins("game_types ON (game_types.game_id = games.id)").where("game_types.id IN (1,2)")
这样查询仍然具有合理的性能。您可以稍微扩展一下,不要包含对ID的直接引用,但这取决于您。