邀请已接受? after_invitation_accepted CALLBACK 中返回 FALSE

问题描述 投票:0回答:1

我使用 devise_invitable (2.0.6)

邀请已接受?在 after_invitation_accepted CALLBACK 中返回 FALSE,但是当我在这里暂停并检查 Rails 控制台时,它给了我 true 的 Invitation_accepted ?

用户.rb

after_invitation_accepted :create_something

def create_something
  create_service unless invitation_sent_at? && !invitation_accepted?  
end

这里,invitation_accepted?在这个回调中是 false,但是,当我在这里暂停并检查 Rails 控制台时,它给了我 true

我错过了什么吗?

ruby-on-rails ruby devise ruby-on-rails-6 devise-invitable
1个回答
0
投票

源代码中

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

© www.soinside.com 2019 - 2024. All rights reserved.