2011-08-23 69 views
2

我有一個新的導軌系統,我正在創建。我正在設置身份驗證的過程。我的問題是,我所有的現有用戶都沒有確認令牌,我也無法弄清楚獲取令牌的方法。我曾經期望在登錄後用戶會被提示重新發送令牌,但情況並非如此。此外,我無法弄清楚如何改變認證過程以在用戶成功認證時添加此鏈接。Ruby on Rails + Devise +現有用戶表==沒有confirm_tokens

我想改變它,以便它們可以登錄一段時間,但會在時間段到期之前顯示一個鏈接重新發送確認。我看到有一種方法可以設置他們可以登錄的時間段,但我無法弄清楚配置的位置。我還擔心,因爲他們在數據庫中根本沒有confirm_token,所以它不會很好。

+0

我發現confirm_within在config/initializers/devise.rb下的設置 我不確定這是我應該設置的位置,還是應該嘗試將它設置在某個環境文件中。 但是,它不適合我。我假設這是因爲用戶沒有confirm_token。 但希望這會幫助其他人。 – Altonymous

回答

2

這與設計的可確認選項有關。在這裏你必須做兩件事。首先,您必須設置允許回答確認的時間段。

要設置用戶必須確認你有配置色器件初始化並取消一行的時間段:

# config/initializers/devise.rb 
config.confirm_within = 2.days 

接下來,您必須手動發送確認郵件(此功能也將創建

# in console 
User.find(1).send_confirmation_instructions 

我會測試,然後寫了下面的腳本:

0123確認令牌,如果不存在的話),這可以通過控制檯或腳本來完成

這是一個非常緩慢的過程,如果你有成千上萬的用戶,但會完成這項工作。

檢查出來:Confirmable

+0

這是啓用的,但這不是我正在談論的標記。我正在談論用戶註冊後的確認。現有用戶將沒有確認令牌,他們將無法登錄。如果我嘗試設置可以在未經確認的情況下登錄的時間段,則不起作用。所以我不知道如何爲他們創建confirmation_tokens,並同時通知他們他們需要確認他們的賬戶。 – Altonymous

+0

我第一次誤解了這個問題......我修復了我的答案! – ersamy

1

只需確認您現有的用戶,像這樣

User.all.each do |user| user.confirm! end 
在控制檯或腳本

+0

不要以爲他想自動確認所有用戶。我想他希望他們必須確認他們的電子郵件。 – Aaron