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
—
то есть валидатор в отдельном файле в специальной папке рядом с сервис объектом, а его фейл завершает сервис объект
конкретно этот пример с драй, но можно и без него
надеюсь понятно накидал 🙂
—
можно даже в контроллере вызывать валидацию, поинт в ее отдельности. чтобы вызывать чисто класс и получать ответ
Да, как обычно: контроллер-интерактор-контракт(и трансформер)-репрезентер. Ещё сюда же репу/кьюери. Вроде бы покрывает все, что нужно.
Слишком мало паттернов - не пройдешь собес
добавим драй стракты, монады, будем использовать репозитори паттерн до состояния что бизнес логика потеряется в абстракциях
Валидатор в папочке рядом с интерактором это не rails way ни разу )
вообще похую рэилс вэй или не рэилс оно должно быть удобно рэилс вэй это валидации в моделях
Структура папок в рельсвэй это одноуровневая структура Отдельно /app/forms, отдельно /app/validators и так далее. А понамешивать все вместе рядом в папочки это мешанина и мешает переиспользовать
валидатор существует для конкретного сервис объекта, его и не нужно переиспользовать но если очень хочется, то можешь
> валидатор существует для конкретного сервис объекта Валидатор существует для конкретного бизнес кейса. Высокая связность знаешь что такое?
мешанина это валидатор и логика в одном файле моя цель этого не допускать
Вот здесь мы пускаем данные по такому формату, а вот здесь например сокращенный. Причем это может в нескольких сервисах использоваться
для конкретного сервис объекта и скорее всего даже для конкретного эндпоинта)
Мешанина это когда ты пытаешься каждый сервис объект гемом сделать
Для конкретного бизнес кейса оно существует
каким гемом?) астанавись
Когда ты сервис вместе со всеми завистмостями херачишь в одну папочку рядом. Мусор
Обсуждают сегодня