设计验证错误

时间:2013-02-16 00:53:45

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

我尝试手动创建Devise用户。问题是,当我打电话给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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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