Skip to content

Использование действий

Действия в сервисе — это поочередный вызов методов. Вызов методов сервиса происходит при помощи метода make.

Примеры

Минимальный

ruby
class PostsService::Create < ApplicationService::Base
  def call
    # something
  end
end

Несколько методов

ruby
class PostsService::Create < ApplicationService::Base
  # ...

  make :assign_api_model
  make :perform_api_request
  make :process_result

  def assign_api_model
    internals.api_model = APIModel.new(...)
  end

  def perform_api_request
    internals.response = APIClient.resource.create(internals.api_model)
  end

  def process_result
    ARModel.create!(internals.response)
  end
end

Опции

Подробнее про опции вы можете узнать в разделе опций.

Группа из нескольких действий

Подробнее про группу из нескольких действий (методов) вы можете узнать в разделе группирования.

Алиасы для make

Через конфигурацию action_aliases можно добавить алиас для метода make.

ruby
configuration do
  action_aliases %i[execute]
end

execute :something

def something
  # ...
end

Сокращения для make

Через конфигурацию action_shortcuts можно добавить часто используемые слова, которые используются в виде префиксов в именах методов. Имена самих методов короче не станут, но это позволит сократить строки с применением метода make и улучшить читаемость кода сервиса, сделав его выразительнее.

ruby
configuration do
  action_shortcuts %i[assign perform]
end

assign :api_model
perform :api_request
make :process_result

def assign_api_model
  internals.api_model = APIModel.new
end

def perform_api_request
  internals.response = APIClient.resource.create(internals.api_model)
end

def process_result
  ARModel.create!(internals.response)
end