
A
06.09.2017
13:37:47

Dima
06.09.2017
13:39:01
https://youtu.be/OMPfEXIlTVE?t=8m8s

Victor
06.09.2017
13:41:07
да, это оттуда скриншот )
пропустил двоеточие между consumer и secret -- исправил, не помогло
добавил user-agent и content-length -- не помогло

Google

Alex
06.09.2017
13:57:47
потом делай через руби

Vlad
06.09.2017
14:14:09
Ребят а какой хук мне использовать если я хочу после того как происходит апдейт объекта модели вызывать функцию которая тоже апдейтит один параметр?

Сергей
06.09.2017
14:17:41

Vlad
06.09.2017
14:17:51
Суть в том что все хуки на апдейт будут зацикливаться и на афтер сейв тоже

Alex
06.09.2017
14:19:30
я бы был поосторожнее с хуками

Alex
06.09.2017
14:20:42
можно зафигачить update_column(attr, val) - тогда коллбеки не срабатывают (и валидации)
но вообще это стремная идея - обновлять поле после обновления - а зачем это надо по задаче?
http://www.davidverhasselt.com/set-attributes-in-activerecord/
может мы кошерный способ подскажем

Павел
06.09.2017
14:22:08

Vlad
06.09.2017
14:23:07
Ну у меня есть рилейшн полицейский - район, и в копе поле дистрикт_айди, когда я обновляю его мне нужно чтобы поле копа сити_айди менялось на дистрикт.сити_айди

Alex
06.09.2017
14:24:47
тогда можно проще и красивее

Marsel
06.09.2017
14:25:04
если сити_айди можно вытащить из дистрикта, надо ли его пихать отдельно в копа?

Vlad
06.09.2017
14:25:26
А как это в контроллере описать

Google

Vlad
06.09.2017
14:25:46
Чтобы в апдейт полем сити_айди приходило дистрикт.сиди_айди

Alex
06.09.2017
14:26:45
пихать кучу логики в модель или контроллер ну так себе идея.

Максим
06.09.2017
14:27:20
так так так
я как раз читал что бизнес логику надо в модель
куда если не в неё?

Vlad
06.09.2017
14:27:35
Так получится сервис на одну строчку

Максим
06.09.2017
14:27:37
сервисы?

Alex
06.09.2017
14:27:41
больше сервисов богу сервисов

Alex
06.09.2017
14:27:57

Максим
06.09.2017
14:28:08
так значит по сервисам?

Alex
06.09.2017
14:28:11
иначе как раз говнокод и появляется - срочка там, строчка тут

Anton
06.09.2017
14:28:12

Alex
06.09.2017
14:28:17
уже не одна строчка.

Anton
06.09.2017
14:28:32

Максим
06.09.2017
14:28:35

Alex
06.09.2017
14:28:45

Google

Vlad
06.09.2017
14:28:52
Я могу просто написать апдейт атрибут в сервисе

Vladislav
06.09.2017
14:28:54
Он тебе врал
ну в реилс стайл гайде написано что бизнес логику туда пихать

Alex
06.09.2017
14:28:54

Alex
06.09.2017
14:28:56
потом у тебя будет god модель на которой весь сервис крутится

Anton
06.09.2017
14:29:00

Alex
06.09.2017
14:29:02
и ты замучаешься добавлять новый кейс
модель данные хранит.

Максим
06.09.2017
14:29:15
конечно не надо потому и спрашиваю как улчше

Alex
06.09.2017
14:29:22
сделать сервис на каждый случай

Alex
06.09.2017
14:29:26
проснуться не успеешь а у тебя уже модель на 1.5к срок) - реальная ситуация между прочим

Anton
06.09.2017
14:29:31

Alex
06.09.2017
14:29:33
если получится то сделать один сервис на несколько ОЧЕНЬ похожих случаев.

Максим
06.09.2017
14:29:45
где тогда лучше знаний нахватываться?

Alex
06.09.2017
14:29:46
главное чтобы сервисы не дергали кучу других сервисов, а то тоже замучаешься.

Максим
06.09.2017
14:30:01
т.е. изолированые сервисы под каждый кейс

Alex
06.09.2017
14:30:06
по возможности да.
у нас в проекте сделали сервисы на создание модели. Не самый лучший выход, но лучше модели имхо.

Alex
06.09.2017
14:31:49
а что не так? по-моему норм

Google

Alex
06.09.2017
14:32:05
у нас и на update есть отдельные

Alex
06.09.2017
14:32:06
Этот сервис начинает обрастать кучей условий и т.д.
на update отдельные да
правда кто то был умным, на одну модель повесил наследование на update
он наследуется от create :)))

Anton
06.09.2017
14:32:54

Admin
ERROR: S client not available

Alex
06.09.2017
14:33:19

Anton
06.09.2017
14:33:48

Максим
06.09.2017
14:33:51

Alex
06.09.2017
14:34:15

Anton
06.09.2017
14:34:15
По сути команда - это такая штука, которая знает как сохранять, обновлять или удалять данные из базы

Alex
06.09.2017
14:34:18
много годноты

Максим
06.09.2017
14:34:25
пасиб

Alex
06.09.2017
14:34:34
у меня правда с января накопилось рассылок уже. Все руки не дойдут их прочитать.

Anton
06.09.2017
14:35:31

Alex
06.09.2017
14:35:43
чойто оно валидировать не должно
у нас оно вызывает форму-валидатор

Google

Alex
06.09.2017
14:36:02
который reform форма
хотя мне чото не очень подход такой нравится, кривовато оно у нас )
я бы выкинул реформ, с ним больше проблем. И попробовал Active Model

Anton
06.09.2017
14:37:03

Alex
06.09.2017
14:37:14
ну по сути валидирует форма
но сервис который создает модель может прокинуть ошибки
валидации.

Anton
06.09.2017
14:37:32
Потому валидировать надо данные которые из вне пришли, а не в моделе

Максим
06.09.2017
14:37:36

Alex
06.09.2017
14:37:49

Максим
06.09.2017
14:37:50
извините что в разговор больших ребят вклиниваюсь но просто хочу как можно больше из этого понять

Alex
06.09.2017
14:38:07

Anton
06.09.2017
14:38:56
валидировать надо конечные данные
Не, зависит от того, что делаешь. Я пришёл к выводу, что для меня лучший вариант такой:
Получить данные -> провалидировать -> трансформировать валидные -> сохранить

Alex
06.09.2017
14:39:22
ну смотри, я трансформирую данные и проецирую их на будущую версию модели. Если все ок - сейв
Это позволяет не проверять каждый раз как конкретно здесь трансформируются данные
а только если оно неправильно работает.

Alex
06.09.2017
14:39:45
так стоп а как же validate
в маленьких приложениях норм
в больших стало некомильфо - на каждый чих все выносим в отдельный класс с единственным назанчением - Single responsibility principle - тут и куча архитектурных решений вроде Service Object, From Object, etc...

Anton
06.09.2017
14:39:55

Максим
06.09.2017
14:40:02
ого клёвый канал спасибо

Alex
06.09.2017
14:40:27
> Модель вмещает в себя много логики. Это мешает в тестах
Про тесты жиза вообще