
Nikita
06.09.2018
08:46:15
предположим мне нужен update, я вынужден буду делать все поля optional?
с create схемой то вопросов нет

Anton
06.09.2018
08:46:37

Roman
06.09.2018
08:46:47

Google

Anton
06.09.2018
08:46:57
required().maybe

Boris
06.09.2018
08:47:12

Nikita
06.09.2018
08:47:24
Anton разве required не обязывает наличие ключа в хеше?

Dimon
06.09.2018
08:47:41

Anton
06.09.2018
08:47:42
Но там он может быть заполнен или нет

Nikita
06.09.2018
08:48:13
а если я обновляю только 1 поле у модели? он же мне в эррорах высрет кучу говна

Anton
06.09.2018
08:48:24
Не должен

Nikita
06.09.2018
08:48:30
ну я же проверял

Roman
06.09.2018
08:48:37
высрет, надо optional

Nikita
06.09.2018
08:48:42
тут вариант только делать optional
для обновления
и required для создания

Google

Roman
06.09.2018
08:48:52
если возможен null, то с maybe

Nikita
06.09.2018
08:49:04

Boris
06.09.2018
08:49:20
еще можно сделать отдельно форму, а необходимые на все случаи жизни валидации - в модели.

Anton
06.09.2018
08:49:38
Да, я попутал, maybe на nil значение

Boris
06.09.2018
08:49:49
Вообще для простого CRUD хватит и ORM (допустим ActiveRecord или SequelModel) валидации

Nikita
06.09.2018
08:49:52
и еще вопросик, если в драй валидейшене юзаешь config.type_specs = true, значит нужно всем атрибутам прописывать тип?

Anton
06.09.2018
08:50:02

Nikita
06.09.2018
08:50:42
это не простой круд
из них примерно 30-50 валидации
которых там не должно быть

Boris
06.09.2018
08:51:50
тогда 2 формы на create/update. Можно сделать одну базовую, другую от нее унаследовав.

Nikita
06.09.2018
08:52:04
Ага, 2 формы
Антон, по config.type_specs = true, если его true делаешь, то обязательно нужно 2-м аргументом в required писать тип же, верно?

Boris
06.09.2018
08:53:04

Nikita
06.09.2018
08:53:11
это не нужно
лучше сделать 2 независимых формы

Boris
06.09.2018
08:53:20
ну тебе виднее)

Nikita
06.09.2018
08:53:26
на create и update
@davydovanton @RomanPa спасибо за помощь

Google

Boris
06.09.2018
08:53:40
очень зависит от ситуации

Nikita
06.09.2018
08:53:51
это зависит не от ситуации

Anton
06.09.2018
08:54:16

Nikita
06.09.2018
08:54:22
ок, спасибо

Boris
06.09.2018
08:54:44

Nikita
06.09.2018
08:55:06
ну если все делать аля DONT REPEAT YOURSELF
то у тебя в проекте будет пиздос, ибо будут всякие левые наследования, консерны и тонна метапрограммирования
если нравится мазахизм, то enjoy

Roman
06.09.2018
08:55:53
есть еще принцип KISS, который по мне даже важней :)

Nikita
06.09.2018
08:56:12
да
это самый топорный и самый очевидный паттерн

Boris
06.09.2018
08:56:19

Nikita
06.09.2018
08:56:37
https://dry-rb.org/gems/dry-validation/custom-predicates/

Boris
06.09.2018
08:56:58
да их тоже пользовал. Например для валидации биткоин-адресов

Nikita
06.09.2018
08:57:12
например валидация номера телефона, эмейла, даты и т.д.

Boris
06.09.2018
08:57:20
ну да

Nikita
06.09.2018
08:57:29
ну так ты сам себе противоречишь ?

Boris
06.09.2018
08:58:06
где-то наследование, где-то композиция

Google

Nikita
06.09.2018
08:58:43
да, но по своему опыту могу сказать, что наследование в руби крайне редко бывает оправданным

Boris
06.09.2018
08:58:46
это не взаимоисключающие понятия

Nikita
06.09.2018
08:59:14
Игорь, ну говори уже)

Boris
06.09.2018
08:59:18

Nikita
06.09.2018
08:59:37

Boris
06.09.2018
08:59:49

Serhii
06.09.2018
09:00:09

Nikita
06.09.2018
09:00:14
можно

Boris
06.09.2018
09:00:39
и временами очень даже хочется=)
state все-таки боль

Admin
ERROR: S client not available

Nikita
06.09.2018
09:00:51
ага, в функциональщине тоже круто

Boris
06.09.2018
09:01:58
ладно друзья, вернусь к лячканью говноспеков=) чтот на новой работе почти нет времени поболтать

Serhii
06.09.2018
09:19:29
И типизацию обязательно добавить. Тоже хайп по ней!

Roman
06.09.2018
09:23:38

Dimon
06.09.2018
09:33:16
Были бы абстрактные классы в рубях

Vasiliy
06.09.2018
09:33:53
вот тогда бы зажили

Dimon
06.09.2018
09:34:09
Ну
Было бы больше смысла в наследовании

Roman
06.09.2018
09:45:36
че ты под абстрактным классом понимаешь?

Google

Roman
06.09.2018
09:45:55
бля короче насчет скрещивания ООП с функциональщиной в руби тут подвезли

Dimon
06.09.2018
09:45:56
как в джаве

Roman
06.09.2018
09:46:03
а че там?

Vasiliy
06.09.2018
09:46:13
абстрактные классы

Roman
06.09.2018
09:46:17
а
ясно
в моем любимом flamegragh завезли явное отображение циклом GC
и получаются интересные инсайты

Dimon
06.09.2018
09:46:45
https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

Aldar
06.09.2018
09:46:45

Roman
06.09.2018
09:46:53
http://joxi.net/xAeBpG6HpZ5Jkr.png
пикрил - срез работы апи-прокси
голубое слева - запрос апишки через typhoeus
а плоские одноуровневые куски - это как раз когда профайлер натыкался на интерпретатор в процессе сборки мусора

Vasiliy
06.09.2018
09:47:57
нихуя ты художник

Roman
06.09.2018
09:47:57
их примерно 40%
то есть элементарная вообще задача
получил xml по http, распарсил его OX'ом, конвертнул на лету в хеш, это на 40% - сборка мусора
а теперь представьте что у вас функциональная иммутабельность и вам на каждый чих надо собирать новый объект
точнее иначе
нахуй это нужно

Dimon
06.09.2018
09:50:26
method_missing driven development?