繁体   English   中英

如何将Devise Confirmable添加到现有的Rails应用

[英]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.rbspec_utilities.rb和所有的个人规格,以确保user.confirm! 被叫。

更改工厂和实用程序方法将319个错误降低到大约30个,然后我必须进入每个规格并仔细confirm! 在各个地方。

仍然不确定我的方法是否不合时宜,但我将失败规范归结为0 ...(目前)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM