Ruby on rails Rails:基于对象的两个has_one-through关联查找对象
我的rails应用程序有User、conva和userconva模型。用户车队同时属于用户和车队。车队看起来像这样:Ruby on rails Rails:基于对象的两个has_one-through关联查找对象,ruby-on-rails,ruby-on-rails-4,rails-activerecord,has-one,has-one-through,Ruby On Rails,Ruby On Rails 4,Rails Activerecord,Has One,Has One Through,我的rails应用程序有User、conva和userconva模型。用户车队同时属于用户和车队。车队看起来像这样: 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 :gue
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
和一些包含而不是连接的置换
从本质上讲,我怎样才能找到一个基于两个has_-one关联的对象。请记住,conva.host和conva.guest都是用户。进行加入时,主机加入称为user\u convas,而来宾加入称为guest\u user\u convas\u convas\u join 因此,如果您有一个id为3的主机和一个id为4的来宾,那么下面的方法似乎有效:
Convo.joins(:host, :guest).where("user_convos.user_id = 3 AND guest_user_convos_convos_join.user_id = 4")
列角色在哪里定义?
Convo.joins(:host, :guest).where("user_convos.user_id = 3 AND guest_user_convos_convos_join.user_id = 4")