スコープ付きの一意の検証には多くの関連性があります
概要
私のホテルには多くのユーザーがおり、ユーザーは多くのホテルに所属している可能性があります。スコープの検証、つまりホテルごとにユーザーのユーザー名と電子メールの一意性を検証したいと考えています。現在、私のモデルは次のようになります。
class User < ApplicationRecord
has_many :hotel_users
has_many :hotels, through: :hotel_users
end
そして私のホテルのモデル:
class Hotel < ApplicationRecord
has_many :hotel_users
has_many :users, through: :hotel_users
end
助言がありますか?
解決策
結合テーブルの明示的なモデルを作成し、そこでの一意性を検証する必要があります。
class HotelsUsers < ApplicationRecord
belongs_to :hotel
belongs_to :user
validates_uniqueness_of :user_id, :scope => :hotel_id
end