Organizationhas_manyusersから までのモデルがありますmemberships。一意性検証を設定する正しい方法は何ですか?
私は持っている:
class Organization < ActiveRecord::Base
has_many :memberships
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :organization
validates_presence_of :organization_id
validates_presence_of :user_id
validates_uniqueness_of :user_id, :scope => :organization_id
end
class User < ActiveRecord::Base
has_many :memberships
end
メンバーシップを作成しようとすると:
o = Organization.find(275)
u = User.find(505)
m = o.memberships.new(user_id: u.id)
m.save
私は得る:
Membership Exists (2.0ms) SELECT 1 AS one FROM "memberships" WHERE ("memberships"."user_id" = 501 AND "memberships"."organization_id" = 275) LIMIT 1
postgres コンソールで正確なクエリを実行しようとすると、0 行の結果が得られます。o.memberships&u.membershipsも 0 の結果を示します。
私が考えることができる唯一のことは、一意性の検証membershipsが間違っているということですか? ここで何が問題なのですか?