Size: a a a

2017 August 04

E👾

Evgeny 👾 in Rubyata
интересно, спасибо. Про гем почитаю
источник

PT

Pavel Tkachenko in Rubyata
Вообще советую все гемы dry-ruby, там и идеоматичные монады, и типизация. Руби-Скала своя
источник

PT

Pavel Tkachenko in Rubyata
Только там .select на .map замени, по ошибке написал
источник

PT

Pavel Tkachenko in Rubyata
Ну и простейшая реализация
источник

PT

Pavel Tkachenko in Rubyata
источник

PT

Pavel Tkachenko in Rubyata
Допускаются [true, true], [true, false], [false, true], [false, false] пары для [endless, trial]
источник

KO

Kalys Osmonov in Rubyata
Как написал @sharshenov, будут проблемы с race condition.
источник

AD

Anton Davydov in Rubyata
👋
источник

MS

Mikhail Sytchev in Rubyata
я считаю что это задача бизнес логики, а не валидаторов
источник

MS

Mikhail Sytchev in Rubyata
валидаторы на корректность проверять должны объект
источник

PT

Pavel Tkachenko in Rubyata
Mikhail Sytchev
я считаю что это задача бизнес логики, а не валидаторов
Ну к сожалению rails по умолчанию с массивами данных не очень работает, а в энтерпрайзе это почему-то очень любят.
источник

PT

Pavel Tkachenko in Rubyata
Атомарно всегда круче слать, принимать, проверять
источник

PT

Pavel Tkachenko in Rubyata
Но иногда не получается в силу определенных обстоятельств
источник

MS

Mikhail Sytchev in Rubyata
чот не понял тебя
источник

PT

Pavel Tkachenko in Rubyata
Kalys Osmonov
Как написал @sharshenov, будут проблемы с race condition.
Валидацию всех объектов тут в любом случае нужно делать до того как передать в ActiveRecord
источник

PT

Pavel Tkachenko in Rubyata
Mikhail Sytchev
чот не понял тебя
Много компаний, кто вот так данные шлет, сразу кучей. И приходится писать кастомные валидаторы
источник

MS

Mikhail Sytchev in Rubyata
Сразу кучей пусть шлют, ничего страшного. Просто валидация происходит по заранее определенным критериям. А вот то, что объект, который уникален в БД  это проверка на уровень ниже. Тот же рейс кондишн более вероятно возникнет если объект прошел валидацию, а в БД уже положили на место другой записи уникальное значение.
источник

MS

Mikhail Sytchev in Rubyata
Чтобы избежать RC  можно сделать SELECT for update в методе, который дастает уникальное значение, или воспользоваться другой стратегией по блокировки записей на уровне БД.
источник

MS

Mikhail Sytchev in Rubyata
Или транзакционно все объекты обновить
источник

PT

Pavel Tkachenko in Rubyata
Mikhail Sytchev
Сразу кучей пусть шлют, ничего страшного. Просто валидация происходит по заранее определенным критериям. А вот то, что объект, который уникален в БД  это проверка на уровень ниже. Тот же рейс кондишн более вероятно возникнет если объект прошел валидацию, а в БД уже положили на место другой записи уникальное значение.
Все верно. Согласен
источник