Приглашение_принято? возвращает FALSE в after_invitation_accepted CALLBACK

Я использую devise_invitable (2.0.6)

приглашение_принято? возвращает FALSE в after_invitation_accepted CALLBACK, но когда я делаю паузу здесь и проверяю консоль рельсов, это дает мне true для приглашения_accepted?

user.rb

after_invitation_accepted :create_something

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

здесь, приглашение_принято? внутри этого обратного вызова является ложным, но когда я делаю паузу и проверяю консоль рельсов, это дает мне true

Я что-то пропустил??

idownvotedbecau.se/nocode
smathy 21.03.2024 23:26

Вопрос @smathy дополнен кодом

praaveen V R 22.03.2024 03:13

Покажите сеанс консоли, показывающий все, что означает «когда я делаю паузу здесь и проверяю».

smathy 22.03.2024 06:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прямо над надписью приглашение_принято есть комментарий? в исходном коде:

# 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.

Спасибо за подробное объяснение. Поэтому нет необходимости проверять условие внутри обратного вызова, поскольку это обратный вызов after_invitation_accepted.

praaveen V R 22.03.2024 09:04

Точнее, обратный вызов after_invitation_accepted вызывается только сразу после того, как приглашение было принято и когда это принятие было успешно записано в базу данных. Если принятие не было сохранено, например, из-за ошибки проверки, обратный вызов не будет вызван.

spickermann 22.03.2024 11:37

Другие вопросы по теме