I'm working on a small app, using Devise with two models: Coach
and Athlete
(a coach can have several athletes). Now I'm trying to achieve an invitation system, using the DeviseInvitable gem.
Everything seems fine: when a coach click on the new_athlete_invitation_path
, an athlete is created, with an invitation_token
and a coach_id
. But if I try to accept the invitation, following the path from my routes, and the invitation_token
, then I got redirected with the following message:
Started GET "/athlete/invitation/accept?invitation_token=536dc1aee8faef0842a21f6c90fa68121e6c3858c5697215b8282474875fdff0" for 127.0.0.1 at 2019-03-19 11:34:34 +0100
Processing by Athletes::InvitationsController#edit as HTML
Parameters: {"invitation_token"=>"536dc1aee8faef0842a21f6c90fa68121e6c3858c5697215b8282474875fdff0"}
Athlete Load (1.0ms) SELECT "athletes".* FROM "athletes" WHERE "athletes"."invitation_token" = $1 ORDER BY "athletes"."id" ASC LIMIT $2 [["invitation_token", "4316731df92b3e5d369c17971b9db96aea1d33de8741ae5602f6065ef8174a5b"], ["LIMIT", 1]]
↳ /home/soykje/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/log_subscriber.rb:98
Redirected to http://localhost:3000/
Filter chain halted as :resource_from_invitation_token rendered or redirected
Completed 302 Found in 8ms (ActiveRecord: 3.0ms)
I can't figure out the reason of this problem... Would it be related to my two-models configuration? Did I miss something?
Thx in advance for your help!
NB: From my Gemfile:
ruby '2.5.3'
gem 'rails', '~> 5.2.2'
gem 'devise', '~> 4.6', '>= 4.6.1'
gem 'devise_invitable', '~> 2.0'
Okay that was my mistake: I was trying to accept the invitation using the unencrypted token. Just by adding LetterOpener I was able to confirm the invitation, using the correct generated link. Always use the generated link!