私のレールアプリにはUser
、Convo
およびUserConvo
モデルがあります。UserConvo は User と Convo の両方に属します。コンボは次のようになります。
class Convo < ActiveRecord::Base
has_one :host_user_convo, ->{ where role: 'host' }, class_name: 'UserConvo'
has_one :host, through: :host_user_convo, source: :user
has_one :guest_user_convo, ->{ where role: 'guest' }, class_name: 'UserConvo'
has_one :guest, through: :guest_user_convo, source: :user
...
end
特定のホストとゲストを持つ Convo をクエリする場合、私がやりたいこと。
私はこれを試しました:
Convo.joins(:host, :guest).where('host.id = foo AND guest.id = bar').references(:host, :guest)
includes
の代わりに を使用した順列もありjoins
ます。
基本的に、関連付けを通じて has_one の 2 つに基づいてオブジェクトを見つけるにはどうすればよいでしょうか。convo.host
とconvo.guest
ユーザーの両方に注意してください。