考虑以下
class Room < ActiveRecord::Base
belongs_to :user
has_many :authorisations, dependent: :destroy
has_many :authorised_users, through: :authorisations, source: :user
scope :without_privacy_restriction, where(public: true)
end
class User < ActiveRecord::Base
has_many :rooms, dependent: :destroy
has_many :accessible_rooms, through: :authorisations, source: :room
has_many :authorisations
end
用户可以是房间的所有者,也可以是其他用户房间的授权用户。最重要的是,用户可以被定义为管理员(用户表中的另一列代表这一点)并且无论如何都可以访问所有房间。
我希望能够编写一个有效的范围,将所有可访问的房间返回给给定的用户,但我无法确定实现这一目标的最有效方法是什么。