Sql 使用Select调用查询双嵌套联接的Rails活动记录

Sql 使用Select调用查询双嵌套联接的Rails活动记录,sql,ruby-on-rails,activerecord,arel,activerecord-relation,Sql,Ruby On Rails,Activerecord,Arel,Activerecord Relation,我有以下模式: 照片有许多组有许多用户 我将此Rails服务器用作iOS应用程序的后端,并且在添加照片时需要不断向组中所有相关用户发送通知 我的问题是找到成本最低的查询来仅解析受影响的User.id 到目前为止我有 Photo.find(1).groups.joins(:users) 我知道我必须在这之后加一个select参数,但我一辈子都搞不懂语法 给定一张照片,我正在寻找最有效的方法来查找受影响用户id的集合 任何帮助都将不胜感激 users\u id=[] users_id =

我有以下模式:

照片
有许多
有许多
用户

我将此Rails服务器用作iOS应用程序的后端,并且在添加照片时需要不断向组中所有相关用户发送通知

我的问题是找到成本最低的查询来仅解析受影响的
User.id

到目前为止我有

    Photo.find(1).groups.joins(:users)
我知道我必须在这之后加一个select参数,但我一辈子都搞不懂语法

给定一张照片,我正在寻找最有效的方法来查找受影响用户id的集合

任何帮助都将不胜感激

users\u id=[]
users_id = []   
Group.where(photo_id: 1).users.collect{|u| users_id << u.id}  
puts users_id

Group.where(photo|u id:1).users.collect{u|u|users_id在您的照片模型中,您可以有另一个名为users的关联

has_many :group_users, :through => :groups, :source => :users
然后您可以通过以下代码找到用户

@photo = Photo.includes([:group_users]).where("photos.id = ?", 1).first
@affected_users = []
@photo.group_users.map {|user| @affected_users << user.id}
@photo=photo.includes([:group_users])。其中(“photos.id=?”,1)。首先
@受影响的_用户=[]
@photo.group|u users.map{124; user|@impacted_users
group.where(photo|id:1).users.collect{u|u | put u.id}
因为photo有许多组,所以组属于photo,而gorups表将photo|id作为外键,所以请尝试此操作