0

私のレールアプリにはUserConvoおよび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.hostconvo.guestユーザーの両方に注意してください。

4

1 に答える 1