У меня есть ситуация, когда при обратном вызове afterSave
модели я пытаюсь получить доступ к данным из удаленной ассоциации (это устаревшая модель данных с очень сомнительной связью ассоциации).Что я нахожу, так это то, что в рамках обратного вызова я могу выполнить вызов find для модели, но если я выйду правильно, запись никогда не будет вставлена в базу данных.Отсутствие записи означает, что я не могу выполнить поиск по связанной модели, используя данные, которые были только что вставлены в текущую.
Я не нашел упоминаний о том, когда данные фактически передаются в отношениикогда afterSave
обратный вызов включен.Я работаю с устаревшим кодом, но не вижу признаков того, что мы специально проводим транзакции, поэтому я пытаюсь выяснить, какие у меня могут быть варианты.
Спасибо.
ОБНОВЛЕНИЕ
Суть сценария такова: мы проводим регистрацию событий, но люди могут ждать в списке.Пользователь может зарегистрироваться (или быть зарегистрированным) для данного Date
.После завершения регистрации мне нужно проверить список ожидания на наличие записи для регистрируемого пользователя (WaitList.user_id
) на дату регистрации для (WaitList.date_id
).Если такая запись существует, ее можно удалить, потому что она стала активной регистрацией.
Устаревшая схема ставит меня в такое место, где регистрация не связана напрямую с датой, поэтому я не могу получить Date.id
легко.Вместо этого Registration->Registrant->Ticket->Date
.Я знаю, что это не интуитивно понятно, но сейчас это так.Даже лучше (включая сарказм), у нас есть представление с именем attendees
, которое сворачивает всю эту информацию и из которого я мог бы использовать вновь созданный Registration->id
для возврата Attendee.date_id
.Поскольку запись не существует, она не доступна в представлении.
Надеюсь, это обеспечит немного больше контекста.