Size: a a a

Saint P Ruby Community

2021 April 14

i

ikzekly in Saint P Ruby Community
это как замена скучным кнопкам вверх/вниз/лево/право
источник

i

ikzekly in Saint P Ruby Community
лево/право не в тему, можно что-то придумать)
источник
2021 April 15

ZN

Zamira Norova in Saint P Ruby Community
Хай, ребят
Давно меня тут не было

Есть кто онлайн готовый помочь мне понять одну магию в рельсах?

Тут в одной новой фиче много чего намудрили с архитектурой, ассоциациями AR. Итог - объекты одной модели в процессе создания сразу же убивается. То есть
cart = ShoppingCart.create дает мне объект. Но в базе уже нет объекта. Думала какой-то из коллбэков убивает. Добавила after_commit колбэк и в нем проверила persisted? или нет. Запись там все еще существовала.

Как это  отдебажить? Куда копать?
источник

RR

Ruslan Ryabov in Saint P Ruby Community
где-то откатывается транзакция с записью в БД
источник

ZN

Zamira Norova in Saint P Ruby Community
В смысле? Это как? Если откатится, то запись ведь с ID не должен был возвращать
источник

NB

Nikita Bulai in Saint P Ruby Community
Так лог БД должен быть же. И будет видно какая операция убивает запись (ролбэк коммита, запрос на удаление или еще что)
источник

RR

Ruslan Ryabov in Saint P Ruby Community
вернет
источник

RR

Ruslan Ryabov in Saint P Ruby Community
запись фактически создается в БД
источник

RR

Ruslan Ryabov in Saint P Ruby Community
автоинкремент тоже срабатывает
источник

RR

Ruslan Ryabov in Saint P Ruby Community
а пото код генерит rollback и у тебя запись исчезает
источник

RR

Ruslan Ryabov in Saint P Ruby Community
можно начать искать по transaction, возможно код, который создает обернут в блок АР
источник

ZN

Zamira Norova in Saint P Ruby Community
Эм... Нет, если был роллбэк, то объект не должен вернуться с ID. Когда это изменилось?!
источник

RR

Ruslan Ryabov in Saint P Ruby Community
а погоди, after_commit.. да, тут наверно не прав, транзакция должны быть завершиться
источник

ZN

Zamira Norova in Saint P Ruby Community
Я прям в консоли выполняю ShoppingCart.create. И он ведь мне запись возвращает. Созданный
источник

RR

Ruslan Ryabov in Saint P Ruby Community
кстааати
источник

RR

Ruslan Ryabov in Saint P Ruby Community
я не помню как в рельсе, но надо проверить нет ли вложенных транзакций
источник

RR

Ruslan Ryabov in Saint P Ruby Community
когда-то давно с таким дело сталкивался, но не в руби
источник

ZN

Zamira Norova in Saint P Ruby Community
Смотрите, я выполняю create. Он у нас не переопределен. Выполняется стандартный AR create
источник

RR

Ruslan Ryabov in Saint P Ruby Community
когда транзакция в транзакции, и выше стоящяя транзакция откатывала запись, которая создавалась в другой транзакции
источник

ZN

Zamira Norova in Saint P Ruby Community
Дело где-то в ассоцияциях или что-то вроде dependent destroy или touch
источник