class DomainModel::Validation

Public Class Methods

new(*args, &block) click to toggle source
# File lib/domain_model.rb, line 260
def initialize(*args, &block)
  @field_name = args[0] if args[0].is_a?(Symbol)
  @options    = args[0] if args[0].is_a?(Hash)
  @options    = args[1] if args[1].is_a?(Hash)
  @options    = {} if @options.nil?

  @block      = block
end

Public Instance Methods

always?() click to toggle source
# File lib/domain_model.rb, line 290
def always?
  @options.fetch(:always, global?)
end
execute(model, errors) click to toggle source
# File lib/domain_model.rb, line 269
def execute(model, errors)
  if global?
    if always? or errors.empty?
      model.instance_exec(errors, &@block)
    end
  else
    field = model.class.fields.find { |f| f.name == @field_name}
    raise("No field called #{@field_name}") if field.nil?

    field_errors = FieldErrors.new(errors, field)

    if always? or field_errors.empty?
      model.instance_exec(field_errors, &@block)
    end
  end
end
global?() click to toggle source
# File lib/domain_model.rb, line 286
def global?
  @field_name.nil?
end