
Oleg
27.02.2017
09:33:42
что-то у меня не выходит

Alex
27.02.2017
09:33:48
ну и опять же, семантически подчеркивает ради чего транзакция.
а не просто сам факт.

Google

Ilya
27.02.2017
09:34:31

Oleg
27.02.2017
09:34:31
может потому, что в AnotherModel.save на самом деле выполняется
def save
blah
blah
OneMoreModel.save
blah
blah
end

Alex
27.02.2017
09:34:42
save!
лол, патчить save метод
мне кажется ты пилишь грандкостыль

Oleg
27.02.2017
09:35:11
AnotherModel - это не ActiveRecord
это бизнес-модель. :)
А вот OneMoreModel - это уже AR

Alex
27.02.2017
09:35:39
https://www.sitepoint.com/complex-rails-forms-with-nested-attributes/
а, окей.
Вообще для такого обычно юзают что то вроде Reform

I
27.02.2017
09:36:06
угу

Alex
27.02.2017
09:36:11

Google

Alex
27.02.2017
09:36:22
я вот прям не знал что это один и тот же метод, хех.
Я говорю семантически корректнее.

Oleg
27.02.2017
09:36:53
Полезу гуглить сейчас про Reform. Но вот, если в общем, в моем случае .transaction должна работать?

Ilya
27.02.2017
09:37:45
Спасибо кэп.
в каком AR классе его вызывать - без разницы, если он отнаследован. Можешь отнаследовать хоть однобуквенный класс и говорить "так короче, кококо"

Alex
27.02.2017
09:38:01

Oleg
27.02.2017
09:38:44

Alex
27.02.2017
09:38:54
патчинг save метода в модели

Ilya
27.02.2017
09:39:01
это транзакция ActiveRecord. К имплементации конкретно ЭТОГО класса это не имеет ни малейшего отношения в общем случае.

Oleg
27.02.2017
09:39:16
у меня нет патчинга метода save в ar-модели
у меня есть NonAR1 в которой делается NonAR2.save в котором, в свою очередь, делается AR.save!

Alex
27.02.2017
09:40:00
Это читабельнее. Это задает семантический контекст, ради чего создавалась транзакция вообще. Это короче.

ojab
27.02.2017
09:40:44

Oleg
27.02.2017
09:40:56
Да, конечно
Там с БД связан только AR.save! остальные классы к базе не лезут

Ilya
27.02.2017
09:41:46
PostPic.transaction do
pics.each(&:save!)
end

Alex
27.02.2017
09:42:02
говнокод это ActiveRecord::Base.transaction

Ilya
27.02.2017
09:42:07
в класс PostPic

Google

Ilya
27.02.2017
09:42:14
отдельным методом

Alex
27.02.2017
09:42:18
это абстрактный пример, лол
ты правда думаешь что я буду сейчас реальный пример ради тебя разрабатывать?

Ilya
27.02.2017
09:42:30
и там ActiveRecord::Base.transaction
ты не приведешь нормальный пример с вложеной транзакцией в одном месте

Vitaliy
27.02.2017
09:43:01
интересный подход с Model.transaction, забрал себе

Ilya
27.02.2017
09:43:09
потому что это разные класс
ы

Alex
27.02.2017
09:43:14
Это разные модели. У поста есть много фоток

Ilya
27.02.2017
09:43:32
я уверен, что их можно написать нормально

Alex
27.02.2017
09:43:41
Я тебе еще раз говорю что это псевдокод

Alex
27.02.2017
09:43:59
Я правда не желаю тратить время на написание реалистичного кейса, потому что он будет больше.

Ilya
27.02.2017
09:45:00
тогда о чем речь? Я говорю про общий случай. В общем случае ActiveRecord::Base.transaction достаточно. Сразу ясно, что это, откуда, куда смотреть в доках.

Alex
27.02.2017
09:45:44
это и по названию очевидно что это. Однако если у тебя вложенная транзакция, это уже начинает пахнуть.

Ilya
27.02.2017
09:46:08
вложеная транзакция пахнет по определению

ojab
27.02.2017
09:46:10

Alex
27.02.2017
09:46:20
ну и опять же, оно банально длинее, мне вот лень длинно писать и вспоминать что там за класс.

Oleg
27.02.2017
09:47:06

Google

Ilya
27.02.2017
09:48:02

ojab
27.02.2017
09:48:06
А при откатывании изменений исключение не может случиться?
Ибо это то же сохранение, по сути.

Alex
27.02.2017
09:48:33

Ilya
27.02.2017
09:48:45

Alex
27.02.2017
09:48:58
приведи пример подобного названия.

ojab
27.02.2017
09:49:41

I
27.02.2017
09:50:03

Admin
ERROR: S client not available

Alex
27.02.2017
09:50:04
у тебя в блоке транзакции происходит ошибка - блок прекращает выполняться, при выходе из блока AR шлет rollback
не понимаю твоего вопроса тогда.

I
27.02.2017
09:50:41
да, была такая модель на одном проекте

ojab
27.02.2017
09:50:58
Там с БД связан только AR.save! остальные классы к базе не лезут

Ilya
27.02.2017
09:51:06
Emails::Domens::DayStat
у питонистов даже есть правило
типа много неймспейсов не бывает

Alex
27.02.2017
09:52:12
ну, мы не питонисты. У рубистов и рельсовиков многое по другому.

Google

Alex
27.02.2017
09:52:39
Алсо я не знаю бизнеслогику твоего проекта но мне кажется что название твоей модели можно было бы упростить.

Ilya
27.02.2017
09:52:43
в этом отношении все похоже у нас
ну блин, понимаешь, когда моделек штук 300
их надо куда-то девать
хранить все под одним неймспейсом это суицид
тем более, если они начинаются одинаково
и в одной области логики лежат

Alex
27.02.2017
09:53:49
мне кажется, когда так много моделек, уже логично бить проект на куски.

Ilya
27.02.2017
09:54:07
расскажи это бизнесу, ага)

Alex
27.02.2017
09:54:14
Архитектор кто? ты.
бизнесу нужно решение задач.

Ilya
27.02.2017
09:54:53
переписать большой проект на куски это куча бабла
тем более, что нам и так норм
в монолите
а Hanami сырой еще)

Alex
27.02.2017
09:56:13
что в том ханами такого особенного?

Ilya
27.02.2017
09:56:29
там DDD
спецом для крупных проектов

I
27.02.2017
09:56:55

Ilya
27.02.2017
09:57:40
1.0.0beta == анальная боль

I
27.02.2017
09:58:19
ну они пообещали не менять апи - значит, можно начать потихоньку пилить на него переход