module EnumAttributesValidation
Constants
- VERSION
Public Instance Methods
check_enum_invalid_attributes()
click to toggle source
# File lib/enum_attributes_validation.rb, line 17 def check_enum_invalid_attributes if enum_invalid_attributes.present? enum_invalid_attributes.each do |key, opts| if opts[:message] self.errors.add(:base, opts[:message]) else self.errors.add(key, :invalid_enum, value: opts[:value], valid_values: self.class.send(key.to_s.pluralize).keys.sort.join(', '), default: "value provided (#{opts[:value]}) is invalid") end end end end
enum_invalid_attributes()
click to toggle source
# File lib/enum_attributes_validation.rb, line 10 def enum_invalid_attributes @enum_invalid_attributes ||= {} end
validate_enum_attribute(*attributes)
click to toggle source
# File lib/enum_attributes_validation.rb, line 45 def validate_enum_attribute(*attributes) self.validate_enum_attributes(*attributes) end
validate_enum_attributes(*attributes, **opts)
click to toggle source
# File lib/enum_attributes_validation.rb, line 31 def validate_enum_attributes(*attributes, **opts) attributes.each do |attribute| string_attribute = attribute.to_s define_method (string_attribute+"=").to_sym do |argument| unless argument.nil? string_argument = argument.to_s self[string_attribute] = string_argument if self.class.send(string_attribute.pluralize).keys.include?(string_argument) self.enum_invalid_attributes[attribute] = opts.merge(value: string_argument) unless self.class.send(string_attribute.pluralize).keys.include?(string_argument) end end end end