我的 rails 应用程序有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 的对象。请记住,convo.host
作为convo.guest
用户。