【发布时间】:2023-04-11 09:05:01
【问题描述】:
我有一张桌子cameras,可用的选项是current_user.id。在相机表中,每个相机都有一个owner_id,这实际上是添加相机的用户ID。当前用户的相机可以这样获取
user_cameras = Camera.where(owner_id: current_user.id).order(:id).all
但是我有另一个表camera_shares,其中有一个camera_id 和一个user_id(与他们共享相机),我正在做的是,首先获取所有这些共享@987654328 @ 是current_user.id 然后得到所有那些camera_id 并通过它们我得到相机
camera_shares = CameraShare.where(user_id: current_user.id).all
camera_share_ids = []
camera_shares.each do |share|
camera_share_ids[camera_share_ids.count] = share.user_id
end
@shared_cameras = Camera.where(id: camera_share_ids).order(:id).all
我正在寻找一种在第一个查询中加入用户摄像头的方法,以便在一个查询中我可以获得所有用户拥有的摄像头以及与他共享的摄像头,在 camera_shares 中,我有 user_id 的引用以及 camera_id。
我有可能在一个查询中解决所有这些问题吗?
更新:Camera.rb 详细信息
class Camera < Sequel::Model
include Hashie::Extensions::Mash
many_to_one :vendor_model, class: 'VendorModel', key: :model_id
one_to_many :endpoints, class: 'CameraEndpoint'
many_to_one :owner, class: 'User', key: :owner_id
one_to_many :shares, class: 'CameraShare'
one_to_many :webhooks, class: 'Webhook'
one_to_one :cloud_recording
one_to_one :motion_detection
CameraShares 详细信息
class CameraShare < Sequel::Model
# Share kind constants.
PRIVATE = 'private'.freeze
PUBLIC = 'public'.freeze
ALL_KINDS = [PRIVATE, PUBLIC]
# Class relationships.
many_to_one :camera
many_to_one :user
many_to_one :sharer, class: 'User', key: :sharer_id
【问题讨论】:
标签: ruby-on-rails ruby postgresql sequel