我對Rails很陌生,在Rails/ActiveRecord中遇到問題,看起來忽略了我繼承的項目中的validates_uniqueness_of
聲明的範圍。我有以下型號:Rails validates_uniqueness_of忽略範圍
class User < ActiveRecord::Base
…
validates_uniqueness_of :email, scope: :brand_id, allow_nil: true
…
belongs_to :brand
…
end
有與[email protected]
的email
和1
一個brand_id
現有用戶記錄。
當試圖更新的123
的id
其他用戶紀錄,[email protected]
email
和2
一個brand_id
,我得到一個Validation failed: Email has already been taken
錯誤。
我看到下面的兩個查詢運行一前一後出現此錯誤:
SELECT 1 AS one FROM "users" WHERE ("users"."email" = '[email protected]' AND "users"."id" != 123) LIMIT 1;
SELECT 1 AS one FROM "users" WHERE ("users"."email" = '[email protected]' AND "users"."id" != 123 AND "users"."brand_id" = 2) LIMIT 1;
它看起來像第二個查詢是做正確的唯一性檢查,但第一個被忽略的範圍。
任何提示什麼看或如何進一步調試將不勝感激。
我追蹤到設計驗證電子郵件是唯一的。 –