Output
Все атрибуты, которые должен возвращать сервис в Result
должны быть описаны через метод output
.
Использование
Назначение и использование выходящих аргументов сервиса осуществляется через методы outputs=
/outputs
или их алиасы out=
/out
.
class UsersService::Create < ApplicationService::Base
input :first_name, type: String
# ...
def something
outputs.full_name = [inputs.first_name, inputs.middle_name, inputs.last_name].compact.join(" ")
# или
# out.full_name = [inp.first_name, inp.middle_name, inp.last_name].compact.join(" ")
end
end
Опции
Опция type
Эта опция является валидацией.
Будет проверяться чтобы переданное как output значение соответствовало указанному типу (классу).
Используется метод is_a?
.
class NotificationService::Create < ApplicationService::Base
input :user, type: User
output :notification, type: Notification
make :create_notification!
private
def create_notification!
outputs.notification = Notification.create!(user: inputs.user)
end
end