@proRuby

Страница 457 из 1594
Oleg
27.02.2017
09:33:42
что-то у меня не выходит

Alex
27.02.2017
09:33:48
так я то же самое написал)
у меня вариант короче. Особенно если какой Post.transaction

ну и опять же, семантически подчеркивает ради чего транзакция.

а не просто сам факт.

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: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
это транзакция ActiveRecord. К имплементации конкретно ЭТОГО класса это не имеет ни малейшего отношения в общем случае.
Ты правда хочешь поспорить? хорошо. Post.transaction do post.title = 'wtf' PostPic.transaction do pics.each(&:save!) end end

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

Oleg
27.02.2017
09:40:56
Да, конечно

Там с БД связан только AR.save! остальные классы к базе не лезут

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
Там с БД связан только AR.save! остальные классы к базе не лезут
А что мешает сначала всё провалидировать, а потом сохранить если валидации прошли?

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

Oleg
27.02.2017
09:47:06
А что мешает сначала всё провалидировать, а потом сохранить если валидации прошли?
прекрасный вопрос, сейчас так и сделано. Но это сработает только в случае ошибок валидации. В случае любых исключений случится косяк

Google
Ilya
27.02.2017
09:48:02
еще скажи так не бывает :)
говно случается. Просто класс может быть,к примеру, Namespace1::Namespace2::Foo

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

Ибо это то же сохранение, по сути.

Alex
27.02.2017
09:48:33
говно случается. Просто класс может быть,к примеру, Namespace1::Namespace2::Foo
тройной неймспейс модели тоже пахнет по определению.

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

А при откатывании изменений исключение не может случиться?
ну поидее в базу просто посылается rollback если не вложенное. Там особо нечему происходить.

I
27.02.2017
09:50:03
приведи пример подобного названия.
Marketing::EmailManager::Mailer, к примеру =)

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
а Hanami сырой еще)
ну уже 1.0.0beta вышел жи

Ilya
27.02.2017
09:57:40
ну уже 1.0.0beta вышел жи
ну мы-то понимаем)

1.0.0beta == анальная боль

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

Страница 457 из 1594