All attributes that the service should return as a result through the
Result class must be added using the
The assignment and use of service output attributes is done through the
class UsersService::Create < ApplicationService::Base input :first_name, type: String input :middle_name, type: String input :last_name, type: String internal :full_name, type: String output :user, type: User make :assign_full_name make :create! def assign_full_name internals.full_name = [ inputs.first_name, inputs.middle_name, inputs.last_name ].join(" ") end def create! outputs.user = User.create!(full_name: internals.full_name) end end
You can find out more about options in the using options section.
Any output attribute can be accessed as a predicate method.
# ... output :full_name, type: String # ... def something return unless outputs.full_name? # instead of `outputs.full_name.present?` # ... end