我对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;
它看起来像第二个查询是做正确的唯一性检查,但第一个被忽略的范围。
任何提示什么看或如何进一步调试将不胜感激。
我追踪到设计验证电子邮件是唯一的。 –