Релиз 2.2
Были подготовлены и реализованы следующие изменения.
Атрибуты
Internal атрибут
- Добавлена поддержка опции
inclusion
; - Добавлена поддержка опции
must
; - Добавлена поддержка хелперов.
Output атрибут
- Добавлена поддержка опции
inclusion
; - Добавлена поддержка опции
must
; - Добавлена поддержка хелперов.
Опции
- Для опции
consists_of
добавлена проверка вложенных значений.
Методы
Метод success!
Добавлен метод success!
для ручного раннего завершения сервиса успехом.
ruby
class UsersService::Confirmation::Send < ApplicationService::Base
input :user, type: User
make :skip_if_already_sent!
# ...
def skip_if_already_sent!
return if user.need_confirmation?
success!
end
# ...
end
Метод fail!
Для метода fail!
был добавлен атрибут type
. По умолчанию атрибут имеет значение :base
. Вы можете указывать любое наименование, а затем использовать его при обработке Failure
.
ruby
class UsersService::Confirmation::Send < ApplicationService::Base
input :user, type: User
make :skip_if_already_sent!
# ...
def skip_if_already_sent!
return if user.need_confirmation?
fail!(:soft, message: "The confirmation has already been sent")
end
# ...
end
Хуки
Это релиз добавляет еще один подход к обработке результата работы сервиса. Для Result
была добавлена поддержка двух хуков.
Хук on_success
ruby
UsersService::Confirmation::Send
.call(user:)
.on_success do |outputs:|
redirect_to outputs.notification
end
Хук on_failure
ruby
UsersService::Confirmation::Send
.call(user:)
.on_failure(:all) do |exception:|
flash.now[:message] = exception.message
render :new
end
Прочее
Релиз также содержит прочие исправления и улучшения.