devise_invitable
ドキュメントにアクセスするためのゲスト アカウントを作成するために使用しています。ドキュメントにアクセスする際、ゲストはアップグレード ボタンをクリックしてフル アカウントにアップグレードできます。アップグレード ボタンをクリックすると、devise_invitable
招待が承認されます。
以前は機能していた: もう機能していません。
環境:
- rails 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 "/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)
Railsコンソールを介してこれを機能させることができます。
Rails コンソールを並行して実行すると、上記の手順を実行して、期待どおりに機能する accept_invitation リンクを生成できます (つまり、ユーザーに完全なアカウントのパスワードを設定するように求めます)。
注意: raw_invitation_token
Rails コンソール セッションでは異なります。
私は何が欠けていますか?