[英]How to add Devise Confirmable to an existing Rails app
我正在使用现有的Rails应用程序(30多个模型,30多个控制器),并尝试实现Devise的确认功能(目前,在注册过程中,系统不提示用户创建密码)。
我的问题是,两个(看似)小的动作导致300个规格开始失败...而且我希望有经验的人提供任何建议,以帮助我避免陷入任何困境。
这两个动作:
(1)在user.rb
我将:confirmable
添加到devise配置中:
devise :database_authenticatable, :recoverable, :rememberable, :confirmable, ...
(2)在devise.rb
我取消注释allow_unconfirmed_access
配置:
config.allow_unconfirmed_access_for = 2.days
这两个动作几乎导致我所有规格的1/4开始失败。 在我开始研究每个规格并进行更改之前,有人可以让我知道我所缺少的内容还是向正确的方向指出吗?
更新我已将原因缩小到我认为是管理员权限问题。 以普通用户为目标的规范通过了,但是任何需要管理员登录的测试现在都失败了(例如,预期响应为200的规范返回了302或401 ...)
在我厂对于普通用户来说,我包括confirmed_at
为eq Time.now
。 这就是我建立管理员的方式:
factory :admin_user, :parent => :user do
email ADMIN_USER_EMAIL
end
其中ADMIN_USER_EMAIL是一个ENV变量,引用实际的管理员电子邮件地址。 由于它是从:parent => :user
继承而来的,我不确定还有什么可以尝试确认管理员的?
好吧,无论如何这都是一个me脚的问题,但我深入了解了导致319规格损坏的原因。
Devise的:confirmable的功能之一是,不仅需要确认帐户,而且还需要确认对帐户的任何更改。
在用户工厂存根被更新/分配的规范(更新是user.email=
还是gift_payment.user.xyz=
等)中,导致undefined method for nil class
。
所以,我走进我的factories.rb
和spec_utilities.rb
和所有的个人规格,以确保user.confirm!
被叫。
更改工厂和实用程序方法将319个错误降低到大约30个,然后我必须进入每个规格并仔细confirm!
在各个地方。
仍然不确定我的方法是否不合时宜,但我将失败规范归结为0 ...(目前)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.