2

我有以下架构:

照片has manyhas many用户。

我使用这个 Rails 服务器作为 iOS 应用程序的后端,并且在添加照片时需要不断地向组中所有相关用户推送通知。

我的问题是找到最便宜的查询来解决User.ids受影响的问题。

到目前为止我有

    Photo.find(1).groups.joins(:users)

我知道我必须在此之后放置一个选择参数,但无法弄清楚我一生的语法。

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

任何帮助将非常感激!!!

4

2 回答 2

1

在您的照片模型中,您可以有另一个称为用户的关联

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}

现在@affected_users包含所有用户ID。

于 2013-07-17T05:03:51.957 回答
0
users_id = []   
Group.where(photo_id: 1).users.collect{|u| users_id << u.id}  
puts users_id

作为照片has_many组,因此,组belongs_to照片和组表具有photo_id作为外键。

所以,请试试这个。

于 2013-07-17T05:03:35.587 回答