Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 验证don和x27的唯一性;行不通_Ruby On Rails_Validates Uniqueness Of - Fatal编程技术网

Ruby on rails 验证don和x27的唯一性;行不通

Ruby on rails 验证don和x27的唯一性;行不通,ruby-on-rails,validates-uniqueness-of,Ruby On Rails,Validates Uniqueness Of,这不是我以前读过的某种同步问题。 代码非常简单。 模型: class User < ActiveRecord::Base attr_accessor :name, :email validates_uniqueness_of :email, :on => :create, :message => "must be unique" end 我运行了测试,并收到错误消息: ---------------------------- 1) 'User should

这不是我以前读过的某种同步问题。 代码非常简单。 模型:

class User < ActiveRecord::Base
    attr_accessor :name, :email
    validates_uniqueness_of :email, :on => :create, :message => "must be unique"
 end
我运行了测试,并收到错误消息:

----------------------------
1)
'User should reject duplcate email address' FAILED
expected #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil> not to be valid
/Users/mac/workspace/rails_space/uniq/spec/models/user_spec.rb:14:

Finished in 0.067908 seconds

1 example, 1 failure
-----------------------------
----------------------------
1)
“用户应拒绝重复电子邮件地址”失败
应为无效
/Users/mac/workspace/rails\u space/uniq/spec/models/user\u spec.rb:14:
以0.067908秒完成
1例,1例失败
-----------------------------
我运行脚本/控制台,创建两个具有相同电子邮件地址的用户对象。一切正常,没有出现验证消息,两个对象都已插入到表中。我不知道这有什么问题


我的rails版本是2.3.8,rspc是1.3.0。

我认为问题是因为你说:

validates_uniqueness_of :email, :on => :create
User.new可能不会触发此验证。
尝试调用duplicate_user.save!看看这是否会出错

我认为问题出在您的
attr\u访问器
行上。如果您有这些列名,访问器将覆盖列名,而列名只是类的一部分,不关心唯一性。如果要使用访问器方法,则需要以某种方式返回数据库。如果需要访问器,则需要通过调用
write\u属性
将其绑定到数据库

有关更多信息,请参阅“覆盖默认访问器”的文档,网址为


我希望这有帮助

您可以尝试以下方法

attr_accessible :email
validates_uniqueness_of :email, :on => :create, :message => "must be unique"

我运行控制台,它仍然可以保存两个重复的电子邮件对象。快照图片在这里:我完全不知道所有这些错误。是的,问题就在那里!非常感谢你的帮助!
attr_accessible :email
validates_uniqueness_of :email, :on => :create, :message => "must be unique"