169 похожих чатов

С валидацией понравился такой подход, может и вам зайдет: в контроллере


result = Orders::Create.new.call(params)


структура папок:
service_objects (любое имя)
orders
validators
create.rb
create.rb

в Orders::Create:

def call(params)
validated_params = yield validate_params(params)

end

private

def validate_params(params)
validaton.= Validators::Create.new.call(params)
validation.success? ? Success(validation.to_h) : Failure(errors: validation.errors.to_h)
end



то есть валидатор в отдельном файле в специальной папке рядом с сервис объектом, а его фейл завершает сервис объект

конкретно этот пример с драй, но можно и без него

надеюсь понятно накидал 🙂



можно даже в контроллере вызывать валидацию, поинт в ее отдельности. чтобы вызывать чисто класс и получать ответ

18 ответов

16 просмотров

Да, как обычно: контроллер-интерактор-контракт(и трансформер)-репрезентер. Ещё сюда же репу/кьюери. Вроде бы покрывает все, что нужно.

Alexander
Да, как обычно: контроллер-интерактор-контракт(и т...

Слишком мало паттернов - не пройдешь собес

Anton Diachuk
Слишком мало паттернов - не пройдешь собес

добавим драй стракты, монады, будем использовать репозитори паттерн до состояния что бизнес логика потеряется в абстракциях

Валидатор в папочке рядом с интерактором это не rails way ни разу )

Nikolay-Paraskiva Автор вопроса
Alex Ilizarov
Валидатор в папочке рядом с интерактором это не ra...

вообще похую рэилс вэй или не рэилс оно должно быть удобно рэилс вэй это валидации в моделях

Nikolay Paraskiva
вообще похую рэилс вэй или не рэилс оно должно быт...

Структура папок в рельсвэй это одноуровневая структура Отдельно /app/forms, отдельно /app/validators и так далее. А понамешивать все вместе рядом в папочки это мешанина и мешает переиспользовать

Nikolay-Paraskiva Автор вопроса
Alex Ilizarov
Структура папок в рельсвэй это одноуровневая струк...

валидатор существует для конкретного сервис объекта, его и не нужно переиспользовать но если очень хочется, то можешь

Nikolay Paraskiva
валидатор существует для конкретного сервис объект...

> валидатор существует для конкретного сервис объекта Валидатор существует для конкретного бизнес кейса. Высокая связность знаешь что такое?

Nikolay-Paraskiva Автор вопроса
Alex Ilizarov
Структура папок в рельсвэй это одноуровневая струк...

мешанина это валидатор и логика в одном файле моя цель этого не допускать

Alex Ilizarov
> валидатор существует для конкретного сервис объе...

Вот здесь мы пускаем данные по такому формату, а вот здесь например сокращенный. Причем это может в нескольких сервисах использоваться

Nikolay-Paraskiva Автор вопроса
Alex Ilizarov
> валидатор существует для конкретного сервис объе...

для конкретного сервис объекта и скорее всего даже для конкретного эндпоинта)

Nikolay Paraskiva
мешанина это валидатор и логика в одном файле моя...

Мешанина это когда ты пытаешься каждый сервис объект гемом сделать

Nikolay Paraskiva
для конкретного сервис объекта и скорее всего даже...

Для конкретного бизнес кейса оно существует

Nikolay-Paraskiva Автор вопроса
Nikolay Paraskiva
каким гемом?) астанавись

Когда ты сервис вместе со всеми завистмостями херачишь в одну папочку рядом. Мусор

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
62
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Карта сайта