Class: HaveAPI::ModelAdapters::ActiveRecord::ValidatorTranslator

Inherits:
Object
  • Object
show all
Defined in:
lib/haveapi/model_adapters/active_record.rb

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ ValidatorTranslator

Returns a new instance of ValidatorTranslator.



384
385
386
# File 'lib/haveapi/model_adapters/active_record.rb', line 384

def initialize(params)
  @params = params
end

Class Attribute Details

.handlersObject (readonly)

Returns the value of attribute handlers.



305
306
307
# File 'lib/haveapi/model_adapters/active_record.rb', line 305

def handlers
  @handlers
end

Class Method Details

.handle(validator, &block) ⇒ Object



307
308
309
310
# File 'lib/haveapi/model_adapters/active_record.rb', line 307

def handle(validator, &block)
  @handlers ||= {}
  @handlers[validator] = block
end

Instance Method Details

#translate(v) ⇒ Object



403
404
405
406
407
408
409
410
411
412
413
# File 'lib/haveapi/model_adapters/active_record.rb', line 403

def translate(v)
  self.class.handlers.each do |klass, translator|
    if v.is_a?(klass)
      v.attributes.each do |attr|
        @attr = attr
        instance_exec(v, &translator)
      end
      break
    end
  end
end

#validator(key, opts) ⇒ Object



399
400
401
# File 'lib/haveapi/model_adapters/active_record.rb', line 399

def validator(key, opts)
  validator_for(@attr, key, opts)
end

#validator_for(param, key, opts) ⇒ Object



388
389
390
391
392
393
394
395
396
397
# File 'lib/haveapi/model_adapters/active_record.rb', line 388

def validator_for(param, key, opts)
  @params.each do |p|
    next unless p.is_a?(::HaveAPI::Parameters::Typed)

    if p.db_name == param
      p.add_validator(key, opts) if p.load_validators?
      break
    end
  end
end