module ActiveInteractor::ClassMethods

Private Class Methods

i18n_scope() click to toggle source

@note Override {ActiveModel::Translation::ClassMethods#i18n_scope}

# File lib/active_interactor.rb, line 86
def self.i18n_scope
  :activeinteractor
end

Public Instance Methods

expose(*instance_variable_names) click to toggle source

Expose local instance variables into the returning value of {#call}

@param instance_variable_names [Array<Symbol>]

# File lib/active_interactor.rb, line 52
def expose(*instance_variable_names)
  instance_variable_names.each do |name|
    exposures[name.to_sym] = "@#{name}"
  end
end
exposures() click to toggle source

@return [Hash]

# File lib/active_interactor.rb, line 59
def exposures
  @exposures ||= {}
end
validation_attribute_names() click to toggle source

@return [Array<Symbol>]

# File lib/active_interactor.rb, line 64
def validation_attribute_names
  @validation_attribute_names || []
end
validation_required?() click to toggle source

@return [Boolean]

# File lib/active_interactor.rb, line 69
def validation_required?
  validation_attribute_names.present?
end
validations(*attribute_names, &block) click to toggle source

Configure {.validator_class}

@param attribute_names [Array<Symbol>] list of @yield @return [void]

# File lib/active_interactor.rb, line 36
def validations(*attribute_names, &block)
  @validation_attribute_names = attribute_names
  validator_class.class_eval do
    attr_accessor(*attribute_names)
  end
  validator_class.class_eval(&block)
end
validator_class() click to toggle source

@return [Class]

# File lib/active_interactor.rb, line 45
def validator_class
  @validator_class ||= build_validator_class
end

Private Instance Methods

build_validator_class() click to toggle source

@return [Class]

# File lib/active_interactor.rb, line 76
def build_validator_class
  klass = Class.new do
    include ActiveModel::AttributeAssignment
    include ActiveModel::Validations
    extend ActiveModel::Translation

    # @note {ActiveModel::Translation} expects anonymous class to implement {.name}
    cattr_accessor :name

    # @note Override {ActiveModel::Translation::ClassMethods#i18n_scope}
    def self.i18n_scope
      :activeinteractor
    end
  end
  klass.name = name || 'ActiveInteractor' # Fallback for anonymous classes
  klass
end