我正在寻找一种通过关联在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] } )