user
has_many devices
。
编辑:device
有一个registration_id
字段
我想获得一个用户的所有registration_id
设备的数组,然后是某个用户。
我正在努力:
@user.followers.join(:devices).select("devices.registration_id")
但这似乎可行,我该怎么做这个查询?
user
has_many devices
。
编辑:device
有一个registration_id
字段
我想获得一个用户的所有registration_id
设备的数组,然后是某个用户。
我正在努力:
@user.followers.join(:devices).select("devices.registration_id")
但这似乎可行,我该怎么做这个查询?
我不确定,但认为这应该可行:
@user.followers.map { |f| f.devices.pluck(:registration_id) }.flatten
upd:为了尽量减少查询次数,我可以提供以下解决方案:
Device.where(user_id: @user.followers.pluck(:id)).pluck(:registration_id)
@user.followers.join(:devices).select("devices.registration_id")
如果你在 .join 之后加上 en extra s 应该可以工作。它被称为 .joins("devices")
try by swapping
@user.select("devices.registration_id").followers.join(:devices)
您可能需要重新检查设备和注册之间的关联
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}