1

我们最近从 rails 3.2.3 迁移到 Rails 3.2.5,我们正在使用 Devise 2.0.4。在我们的应用程序中,我们已经覆盖了设计控制器,只是为了将omniauth 与设计一起使用。

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

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

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

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

4

1 回答 1

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
于 2012-06-05T07:45:12.917 回答