0

我使用devise_invitable來創建訪客帳戶以訪問文檔。訪問文檔時,訪客可以點擊升級按鈕,升級到完整賬戶。點擊升級按鈕即可接受devise_invitable邀請。devise_invitable無法接受邀請(但通過控制檯工作)

以前工作:不再工作。

環境:

  • 導軌4.2.3(最近升級)
  • 色器件3.4.1
  • devise_invitable 1.3.6

我使用部分爲來賓用戶的報頭生成升級鏈接:

<% @invite_link = accept_user_invitation_url(invitation_token: @invite_token) %> 
<%= link_to "Upgrade", @invite_link, class: "btn btn-danger btn-lg" %> 

@invite_token就像創建:

user = current_user 
user.invite! do |u| 
    u.skip_invitation = true 
end 
@invite_token = user.raw_invitation_token 

所以link_to幫手產生類似:https://myapp/users/invitation/accept?invitation_token=vv_JqeFDLfyX65tx2KhR

除了當我點擊鏈接,就帶我到:https://myapp/users/sign_in

隨着錯誤消息:The invitation token provided is not valid!

日誌報告類似於:

Started GET "https://stackoverflow.com/users/invitation/accept?invitation_token=vv_JqeFDLfyX65tx2KhR" for 31.15.32.222 at 2015-10-15 19:18:34 +1100 
Processing by Devise::InvitationsController#edit as HTML 
    Parameters: {"invitation_token"=>"vv_JqeFDLfyX65tx2KhR"} 
    User Load (5.9ms) SELECT "users".* FROM "users" WHERE "users"."invitation_token" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["invitation_token", "ea9be9890c684e13ece13ec02f89bade81fcd3ac1fb982db72d8f8561d0cf289"]] 
Redirected to https://myapp/ 
Filter chain halted as :resource_from_invitation_token rendered or redirected 
Completed 302 Found in 53ms (ActiveRecord: 5.9ms) 
Started GET "/" for 31.15.32.222 at 2015-10-15 19:49:52 +1100 
Processing by PagesController#index as HTML 
Redirected to https://myapp/users/sign_in 
Completed 302 Found in 11ms (ActiveRecord: 0.0ms) 

能夠通過導軌控制檯使這項工作。

如果我並行運行軌道控制檯,我能夠逐步完成上述步驟併產生accept_invitation鏈接按預期工作(即,它會提示用戶設置爲全帳戶的密碼)。

注意:raw_invitation_token在導軌控制檯會話中有所不同。

我錯過了什麼?

回答

0

我發現代碼調用user.invite!產生raw_invitation_token當網頁被顯示後是否產生accept_invitation鏈接。這意味着accept_invitation鏈接中的標記現在已過時。

通過控制檯,這段代碼沒有被調用,因爲沒有控制器,視圖或javascript組件被調用。所以當使用控制檯時,事情按預期工作。

固定並全部恢復正常。

相關問題