Class: Babylonia::Rails::Validators::LocalesValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
lib/babylonia/rails/validators/locale_validator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#validatorsObject (readonly)

Returns the value of attribute validators.



10
11
12
# File 'lib/babylonia/rails/validators/locale_validator.rb', line 10

def validators
  @validators
end

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/babylonia/rails/validators/locale_validator.rb', line 12

def validate_each(record, attribute, value)
  @validators = {}
  record.available_locales.each do |lang|
    validations = ActiveRecord::VERSION::MAJOR < 4 ? [:acceptance, :exclusion, :format, :inclusion, :length, :numericality, :presence, :uniqueness] : [:absence, :acceptance, :exclusion, :format, :inclusion, :length, :numericality, :presence, :uniqueness]
    validations.each do |validation|
      add_validator validation, attribute, lang if should_validate?(validation, lang)
    end
  end
    
  validators.each do |validator, attributes|
    if validator == :uniqueness
      Babylonia::Rails::Validators::LocaleUniquenessValidator.new(validator_attributes(validator, attributes)).validate(record)
    else
      "ActiveModel::Validations::#{validator.to_s.classify}Validator".constantize.new(validator_attributes(validator, attributes)).validate(record)
    end
  end
end