我正在寻找一种通过关联在has_many中查询基于 child 的模型的方法。

我有3种型号:

class Conversation < ActiveRecord::Base
   has_many :conversations_participants
   has_many :participants, through: :conversations_participants
end

class ConversationsParticipant < ActiveRecord::Base
   belongs_to :conversation
   belongs_to :participant, class_name: 'User'
end

class User < ActiveRecord::Base
   has_many :conversations_participants
   has_many :conversations, through: :conversations_participants
end

我需要找到参与者与ID匹配的对话。

这是我目前所拥有的(不起作用):
Conversation.includes(:participants).where(participants: params[:participants])

最佳答案

听起来好像您只想要对话,如果可以的话,可以joins

Conversation.joins(:participants).where(:users => { :id => params[:participants] } )

否则,如果您希望加载参与者,请使用includes
Conversation.includes(:participants).where(:users => { :id => params[:participants] } )

10-07 21:27