0

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が間違っているということですか? ここで何が問題なのですか?

4

2 に答える 2

1

( docs : http://apidock.com/rails/ActiveRecord/Base/create/classm )によって返されたものは既に保存されているため、次の呼び出しは役に立ちません。o.memberships.create()save

o = Organization.find(275) 
u = User.find(505)
m = o.memberships.create(user_id: u.id)
m.save
于 2013-06-10T08:49:08.480 に答える
0

ここでは、organization_id のスペルが間違っています。

validates_uniqueness_of :user_id, :scope => :organziation_id

そのはず:

validates_uniqueness_of :user_id, :scope => :organization_id
于 2013-06-10T08:45:43.547 に答える