
Alex
01.12.2016
09:48:06
Есть гем интерактора, если ты с ним работал то в новом проекте ты сразу же знаешь как с ним работать. С чем то самописным может быть не все так очевидно
Модели AR тоже не юзаешь?

Антон
01.12.2016
09:48:45
я честно пытаюсь понять зачем юзать интераторы
но никто не может быстро и просто объяснить

Alex
01.12.2016
09:48:48
лол причем тут валидации

Google

Alex
01.12.2016
09:49:17
У большого интерактора мне подход нравится, там можно несколько интеракторов в группу собирать

maier
01.12.2016
09:49:23
органайзеры это что?

Alex
01.12.2016
09:49:28
и интерактор сам запустит rollback если кто то в цепочке сломался

maier
01.12.2016
09:51:17
давайте с уважением к друг другу :) вопрос о том,кто что использует и почему, чтобы отделить бизнес-логику, там уже вопрос удобства

Антон
01.12.2016
09:51:42
а если писать все на искуственных классах то будет плохо?

maier
01.12.2016
09:51:43
спасибо за ответы всем, буду изучать

Alex
01.12.2016
09:51:49
Что угодно используй, лишь бы модели и контроллеры толстыми не были

Антон
01.12.2016
09:52:19

Alex
01.12.2016
09:52:22
context и т.д да?
Что из "давайте уважать друг друга" тебе не понятно?
постоянно срачи разводишь же

Антон
01.12.2016
09:53:23

Google

Alex
01.12.2016
09:53:35
да хрен знает, конкретный гем
gitlab.com у всех отвалился?

Антон
01.12.2016
09:54:47
а что за rollback, контроль за консистентностью интеракторам передается?

Alex
01.12.2016
09:55:23

Антон
01.12.2016
09:55:24
а если transaction завернуть? не получится ли rollback?

Alex
01.12.2016
09:55:35
rollback не всегда только о transactions

Антон
01.12.2016
09:55:52
а что такое rollback тогда?

Alex
01.12.2016
09:56:01
к тому же у каждого interactor должен быть изолированный transactions, иначе смысла в "разбивании" нет.

maier
01.12.2016
09:56:13

Alex
01.12.2016
09:56:21
допустим интерактор ChargeCustomerForPicture, у него роллбэк соответственно будет отменять Charg'инг

Антон
01.12.2016
09:57:48
с чего лучше начать читать?
ну мне в свое время вот это понравилось
быстро и доступно
https://robots.thoughtbot.com/activemodel-form-objects

Alex
01.12.2016
09:58:58
она не будет отменять потому что интерактор уже отработал
во вторых не все решается транзакциями

Антон
01.12.2016
09:59:31
всмысле? если я решаюший метод заверну в транзакцию и внутри транзакции вызову исключение ничего не отработает

Alex
01.12.2016
10:00:31
Еще раз
У тебя есть органайзер
ChargeUserForPicture

Google

Alex
01.12.2016
10:00:50
Запускается когда юзер купил картинку на твоем стоке
в нем ChargeUser, AddPictureToAccount, SendThankYouEmail
Соответственно у тебя ChargeUser может отработать, а AddPictureToAccount сломаться
но ChargeUser уже отработал.
И нарушаешь инкапсуляцию бизнесс логики

Антон
01.12.2016
10:01:55
ну тогда будет nested transactions и может быть кака

Alex
01.12.2016
10:02:35
Заворачивать весь органайзер в транзакцию это костыль. Не все состояние хранится в базе данных.
Зачастую это так, но не во всех приложениях.

Антон
01.12.2016
10:02:43
была разок кака, почему не помню

Alex
01.12.2016
10:02:54
Тот же файл залитый удалить например.

Антон
01.12.2016
10:02:56

Admin
ERROR: S client not available

maier
01.12.2016
10:03:01

Alex
01.12.2016
10:03:09

Антон
01.12.2016
10:03:11

Alex
01.12.2016
10:03:22
Интерактор который этот файл заливал при rollback его удалит

Антон
01.12.2016
10:03:40

Alex
01.12.2016
10:04:12
У тебя контекст может быть провален без эксепшена

Google

Alex
01.12.2016
10:04:25
Денег нет например

Антон
01.12.2016
10:04:36

Alex
01.12.2016
10:04:41
Денег нет? нет

maier
01.12.2016
10:04:42

Alex
01.12.2016
10:04:57
эксепшен это исключительная ситуация которой не должно происходить
нет денег на балансе это банальность.

Антон
01.12.2016
10:05:16
чо правда? :)

Alex
01.12.2016
10:06:32
у тебя контекст может быть провален по совершенно нормальной ситуации
нет денег на счете
это часть бизнес логики

Антон
01.12.2016
10:07:05
будет -100 рублей на счету

Alex
01.12.2016
10:07:25
а причем тут это? :)

Антон
01.12.2016
10:08:04
а причем тут это? :)
причем тут провал бизнес логики?
он может случиться как с интерактором так и без

Alex
01.12.2016
10:08:53
У тебя обычный кейс твоей фичи