私はdevice_invitable(2.0.6)を使用します
招待_承諾されましたか? after_invitation_accepted CALLBACK では FALSE が返されますが、ここで一時停止して Rails コンソールをチェックすると、invitation_accepted? に対して true が返されます。
ユーザー.rb
after_invitation_accepted :create_something
def create_something
create_service unless invitation_sent_at? && !invitation_accepted?
end
ここで、招待は承諾されましたか?このコールバック内では false ですが、ここで一時停止して Rails コンソールをチェックインすると true が返されます
何か見逃したでしょうか??
Invitation_accepted? のすぐ上にコメントがあります。ソースコード内:
# Verifies whether a user accepted an invitation (false when user is accepting it)
def invitation_accepted?
!accepting_invitation? && invitation_accepted_at.present?
end
つまり、invitation_accepted?ユーザーが招待を受け入れている間は true ではなく、ユーザーが招待を受け入れた後にのみ成立します。
accept_invitationの実装を見てみると!次に、招待が受け入れられる前にメソッド内で @accepting_invitation が true に設定されていますが、データベース内のレコードが更新された後は false に設定されていないことがわかります。
データベースからユーザーを再ロードした後でないとinvitation_acceptedとはどういう意味ですか? true を返します。