Module: ActiveInteractor

Extended by:
ActiveSupport::Concern
Defined in:
lib/active_interactor.rb,
lib/active_interactor/version.rb

Overview

ActiveInteractor.

Examples:

class CreateProduct
  include ActiveInteractor

  expose :product

  validations(:name, :price) do
    validates :name, presence: true, length: { maximum: 50 }
    validates :price, presence: true, numericality: { only_integer: true }
  end

  def initialize(repository)
    @repository = repository
  end

  def call(attributes)
    @product = @repository.create(attributes)
  end
end

Defined Under Namespace

Modules: ClassMethods, Interface Classes: Result

Constant Summary collapse

VERSION =
'0.2.0'.freeze

Instance Method Summary collapse

Instance Method Details

#callObject

Raises:

  • (NotImplementedError)


165
166
167
# File 'lib/active_interactor.rb', line 165

def call(*)
  raise NotImplementedError
end

#errorsActiveModel::Errors

Returns:

  • (ActiveModel::Errors)


170
171
172
# File 'lib/active_interactor.rb', line 170

def errors
  validator.errors
end

#merge_errors(additional_errors) ⇒ void

This method returns an undefined value.

Merge the given errors into #errors.

Parameters:

  • additional_errors (ActiveModel::Errors)


178
179
180
181
182
# File 'lib/active_interactor.rb', line 178

def merge_errors(additional_errors)
  additional_errors.full_messages.each do |message|
    errors.add(:base, message)
  end
end

#validatorActiveModel::Validations

Returns:



185
186
187
# File 'lib/active_interactor.rb', line 185

def validator
  @validator ||= self.class.validator_class.new
end