module ActiveInteractor
@example
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
Constants
- VERSION
Public Instance Methods
call(*)
click to toggle source
# File lib/active_interactor.rb, line 165 def call(*) raise NotImplementedError end
errors()
click to toggle source
@return [ActiveModel::Errors]
# File lib/active_interactor.rb, line 170 def errors validator.errors end
merge_errors(additional_errors)
click to toggle source
Merge the given errors into {#errors}.
@param additional_errors [ActiveModel::Errors] @return [void]
# 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
validator()
click to toggle source
@return [ActiveModel::Validations] an instance of {ActiveInteractor::ClassMethods#validator_class}
# File lib/active_interactor.rb, line 185 def validator @validator ||= self.class.validator_class.new end
Private Instance Methods
result_payload()
click to toggle source
@return [Hash] a hash representing a payload for {ActiveInteractor::Result}
# File lib/active_interactor.rb, line 192 def result_payload Hash[].tap do |result| self.class.exposures.each do |name, ivar| result[name] = instance_variable_defined?(ivar) ? instance_variable_get(ivar) : nil end end end
sanitize(params)
click to toggle source
Remove undeclared keys from the given params.
@param params [Hash] @return [Hash]
# File lib/active_interactor.rb, line 213 def sanitize(params) return params unless self.class.validation_required? Hash[].tap do |result| self.class.validation_attribute_names.each do |name| result[name] = params[name] end end end
validate(params)
click to toggle source
@param params [Hash] @return [void]
# File lib/active_interactor.rb, line 202 def validate(params) return unless self.class.validation_required? validator.assign_attributes(params) validator.valid? end