module Enumerize::Base
Public Class Methods
included(base)
click to toggle source
# File lib/enumerize/base.rb, line 3 def self.included(base) base.extend ClassMethods if base.respond_to?(:validate) base.validate :_validate_enumerized_attributes end class << base if (method_defined?(:inherited) || private_method_defined?(:inherited)) && !private_method_defined?(:inherited_without_enumerized) alias_method :inherited_without_enumerized, :inherited private :inherited_without_enumerized end alias_method :inherited, :inherited_with_enumerized end end
new(*)
click to toggle source
Calls superclass method
# File lib/enumerize/base.rb, line 58 def initialize(*) super _set_default_value_for_enumerized_attributes end
Public Instance Methods
read_attribute_for_validation(key)
click to toggle source
Calls superclass method
# File lib/enumerize/base.rb, line 63 def read_attribute_for_validation(key) key = key.to_s if _enumerized_values_for_validation.has_key?(key) _enumerized_values_for_validation[key] else super end end
Private Instance Methods
_enumerized_values_for_validation()
click to toggle source
# File lib/enumerize/base.rb, line 75 def _enumerized_values_for_validation @_enumerized_values_for_validation ||= {} end
_set_default_value_for_enumerized_attributes()
click to toggle source
# File lib/enumerize/base.rb, line 92 def _set_default_value_for_enumerized_attributes self.class.enumerized_attributes.each do |attr| # remove after dropping support for Rails 3.x # https://github.com/brainspec/enumerize/issues/101 begin attr_value = public_send(attr.name) rescue ActiveModel::MissingAttributeError next end value_for_validation = _enumerized_values_for_validation[attr.name.to_s] if (!attr_value || attr_value.empty?) && (!value_for_validation || value_for_validation.empty?) value = attr.default_value if value.respond_to?(:call) value = value.arity == 0 ? value.call : value.call(self) end public_send("#{attr.name}=", value) end end end
_validate_enumerized_attributes()
click to toggle source
# File lib/enumerize/base.rb, line 79 def _validate_enumerized_attributes self.class.enumerized_attributes.each do |attr| value = read_attribute_for_validation(attr.name) next if value.blank? if attr.kind_of? Multiple errors.add attr.name unless value.respond_to?(:all?) && value.all? { |v| v.blank? || attr.find_value(v) } else errors.add attr.name, :inclusion unless attr.find_value(value) end end end