Rails,Devise,Validatable无法正常工作?

时间:2016-03-15 23:39:24

标签: ruby-on-rails validation ruby-on-rails-4 devise

我设置了Devise:可以在我的简单应用上验证,但如果它发现错误,我似乎无法获得注册注册表单。

User.rb:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
...
end

截至目前,我有一个带有标准名称/电子邮件/密码/年龄字段的注册表单,当我提交未失败的表单时,一切正常。

但是,如果我尝试创建一个我知道会失败的新用户(例如创建一个已经存在电子邮件的用户),它仍然会尝试创建用户,而不是重定向回到注册表单,它将继续加载下一页,就好像它是一个有效的用户!当然,在这一点上,我收到一个错误,因为它试图加载一个包含'current_user'代码的页面,并且该用户不存在。

我甚至在哪里开始追踪这个?不确定这是我安装Devise的方式,还是其他什么?请帮忙。谢谢!

2 个答案:

答案 0 :(得分:2)

Haven没有使用过验证,但您可以随时使用自己的一些验证:

validates :email, uniqueness: true
validates :email, presence: true
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, message: "valid email please"

答案 1 :(得分:2)

关于电子邮件的格式,我建议您使用devise.rb。 在那里你可以设置一个正则表达式的电子邮件,不需要放入模型。

 config.email_regexp = /\A[^@]+@[^@]+\z/

Devise's Issue Explanation