如何通过连接表中的条件接收对象

我有桌子GamesBadges他们通过表BadgesGames连接。

 t.integer "badge_id" t.integer "game_id" t.boolean "shown", default: false 

我有Game对象,我想要找到所有未shown Badges

 game_object.(condition?).badges 

怎么弄呢?

假设您设置了has_and_belongs_to_many ‘到’关系:

 class Game < ActiveRecord::Base has_many :game_badges has_many :badges, through: :game_badges end class GameBadge < ActiveRecord::Base belongs_to :game belongs_to :badge end class Badge < ActiveRecord::Base has_many :game_badges has_many :games, through: :game_badges end 

然后你可以使用以下内容:

 game.game_badges.where(shown: false).map(&:badge)