2013-10-21 69 views
0

我正在使用現有的Rails應用程序(30多個模型,30多個控制器)並嘗試實現Devise的可確認(現在用戶在簽署期間不會提示您創建密碼向上)。如何將Devise Confirmable添加到現有的Rails應用程序

我的問題是,兩個(看似)小的動作導致300個規格開始失敗......我希望有更多經驗豐富的老手的任何建議,以幫助我避免任何兔子洞過度。

兩個動作:

(1)user.rb I內添加:confirmable到色器件配置:

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繼承我不知道還有什麼可以嘗試確認管理員?

+3

如果您發佈規範失敗且收到錯誤的示例,這將有所幫助。這是模糊的。 –

回答

0

好吧,無論如何這是一個蹩腳的問題,但我已經到底是什麼導致319個規格突破。

Devise's的一個特點是:可以確認的是,不僅需要確認帳戶,還需要確認帳戶的任何更改。

用戶工廠存根被更新/分配的規格(是否更新是user.email=gift_payment.user.xyz=等)導致undefined method for nil class

所以我進入我的factories.rbspec_utilities.rb和所有的個人規格,以確保user.confirm!被稱爲。

更改工廠和實用方法使319錯誤降低到30左右,從那裏我不得不進入每個規格,並在各個地方灑confirm!。不知道我的方法是不是基地,但我下降到0失敗的規格...(現在)。

相關問題