【问题标题】:Devise Validation Errors设计验证错误
【发布时间】:2013-02-16 00:53:45
【问题描述】:

我正在尝试手动创建一个设计用户。问题是验证似乎只有在我调用 User.create 时才会通过。

当我调用User.new 时,生成的用户实例无效。不幸的是,我无法确定原因。

生成的错误消息只是“验证失败:”。

知道发生了什么吗?

我不想使用User.create,因为我想在保存之前调用#skip_confirmation!,这样就不会发送电子邮件。

任何想法如何调试这个?我试过遍历堆栈跟踪,但没有运气。

if user = User.create(params[:user])
  user.skip_confirmation!
  user.save!
  flash[:success] = "New user #{user.email} created."
  redirect_to user_root_path
else
  flash[:alert] = user.errors
  redirect_to user_root_path
end

【问题讨论】:

  • 你检查过errors对象吗?
  • user = User.create(params[:user]) 将永远是真实的,除非引发异常。当你使用User.new(params[:user])时,具体的错误是什么?发布 params 哈希会有所帮助。

标签: ruby-on-rails ruby-on-rails-3 devise devise-confirmable


【解决方案1】:

尝试为参数数组添加密码。

params[:user][:password] = Devise.friendly_token[0,20]

【讨论】:

    【解决方案2】:

    我无法解释为什么会这样,但似乎在调用 user.skip_confirmation! 之前调用 user.confirm! 解决了这个问题。

    【讨论】:

      【解决方案3】:

      更改条件,因为该值将始终为真。正如dwhalen所说。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-05
        • 1970-01-01
        相关资源
        最近更新 更多