Перейти к основному содержимому
Версия: 1.7

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