在迁移到rails 3.2.5之后发生问题 - resource.save无法正常工作,数据无法保存

时间:2012-06-04 08:52:56

标签: ruby-on-rails devise ruby-on-rails-3.2

我们最近从rails 3.2.3迁移到Rails 3.2.5,我们正在使用Devise 2.0.4。在我们的应用程序中,我们覆盖了Devise控制器,只是为了利用omniauth和devise。

当我们在Sign_UP上使用3.2.3版本时,一旦我们迁移到3.2.5 resource.save 停止工作,它一切正常,它没有显示任何失败或成功消息,只是重定向到sign_in页面

之后我尝试了 resource.save!,这样我就可以得到确切的erorr,它会出现以下错误消息,但这不是真的,因为在Table中没有这样的记录,甚至是当前的内容也未保存

Completed 500 Internal Server Error in 1626644ms
ActiveRecord::RecordInvalid (Validation failed: User name has already been taken):

我也尝试过Devise 2.1并得到了相同的结果。

1 个答案:

答案 0 :(得分:0)

我找到了问题区域。但这有点奇怪 在我们当前工作的Rails 3.2.3应用程序中,我们在模型中进行了验证,这在Rails 3.2.5中失败了

validates :user_name, :uniqueness => true

原因是 - 表中的User_name为“nil”已经可用,当下次我们尝试将“user_name”作为NIL插入时,它会检查NIL的唯一性并在那里失败。

为了解决这个问题,我添加了:allow_nil选项,但我的问题仍然是为什么它没有为rails 3.2.3失败

validates :user_name, :uniqueness => true, :allow_nil => true