次のことを考慮してください
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
ユーザーはルームの所有者になることができ、別のユーザーのルームで承認されたユーザーになることもできます。さらに、ユーザーは管理者 (これを表すユーザー テーブルの別の列) として定義でき、何があってもすべての部屋にアクセスできます。
アクセス可能なすべての部屋を特定のユーザーに返す効率的なスコープを記述できるようにしたいのですが、これを実現する最も効率的な方法を判断できません。