招待_承諾されましたか? after_invitation_accepted CALLBACK で FALSE を返す

概要

私は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 を返します。