0

userhas_many devices

编辑:device有一个registration_id字段

我想获得一个用户的所有registration_id设备的数组,然后是某个用户。

我正在努力:

@user.followers.join(:devices).select("devices.registration_id")

但这似乎可行,我该怎么做这个查询?

4

4 回答 4

1

我不确定,但认为这应该可行:

@user.followers.map { |f| f.devices.pluck(:registration_id) }.flatten

upd:为了尽量减少查询次数,我可以提供以下解决方案:

Device.where(user_id: @user.followers.pluck(:id)).pluck(:registration_id)
于 2012-10-09T11:25:55.447 回答
0
@user.followers.join(:devices).select("devices.registration_id")

如果你在 .join 之后加上 en extra s 应该可以工作。它被称为 .joins("devices")

于 2012-10-09T13:39:08.723 回答
0
     try by swapping
        @user.select("devices.registration_id").followers.join(:devices)
于 2012-10-09T11:26:50.650 回答
0

您可能需要重新检查设备和注册之间的关联

Device
  belongs_to :user
  has_one :registration  #but in this case the device_id should be in Registration

考虑registration_id是Device的一个字段

 arr = @user.followers.collect(&:id)
 @user.devices.collect{|d| d.registration_id if arr.include?d.follower_id}
于 2012-10-09T11:54:27.257 回答