2つのモデルがあり、has_many:thoughリレーションを使用してリンクされています。
他のモデルテーブルで条件を検索する:conditionsパラメーターがありますが、結合テーブルで条件を作成する方法はありますか?
たとえば、私が持っているとしましょう:
User
Game
GameUser
ゲームには多くのユーザーがいる可能性があるため、1人のユーザーには多くのゲームがある可能性があります。しかし、たとえばユーザーがそのゲームを好きかどうかなど、追加情報をジョイントテーブルに保存したいと思います。
そして、次のような関係フィルターをユーザーモデルに含めたいと思います。
has_many :games, :through => 'game_users'
has_many :liked_games, :through => 'game_users', :conditions_join => { :like => true }
この機能を持つためのきれいな方法はありますか?
Jochenのリンクには良い解決策がありますが、:conditions
は非推奨であり、:conditions => ['event_users.active = ?',true]
ビットはあまりRailsではないようです。これを試して:
has_many :game_users
has_many :game_likes, -> { where like: true }, class_name: 'GameUser'
has_many :liked_games, :through => :game_likes, class_name: 'Game', :source => :game
Rails 4では次のことができます:
# app/models/user.rb
has_many :liked_games, -> { where(like: true) }, class_name: "Game",
through: :game_users, source: :game