0
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 与分页一起使用的,因此最好使用单个查询。

提前感谢您挽救了我的理智。

4

1 回答 1

3

在 Rails 中,您总是可以使用简单的 SQL。OR 尚未在 Arel 中完全实现(我上次检查过),所以你想要的类似于:

Game.joins("game_types ON (game_types.game_id = games.id)").where("game_types.id IN (1,2)")

这样,查询仍然具有合理的性能。您可以将其扩展为不包括对 Id 的直接引用,但这取决于您。

于 2012-07-16T13:05:03.233 回答