Class: FlexScaffold::Validations
- Inherits:
-
Object
- Object
- FlexScaffold::Validations
- Defined in:
- lib/validations.rb
Constant Summary collapse
- VALIDATIONS_INFO =
%w( message with on in maximum minimum too_short too_long )- SCHEMA_INFO =
%w( type limit default )
Instance Method Summary collapse
-
#add(attr_name, type, configuration = {}) ⇒ Object
Adds a validation of an attribute (
attr_name) to the record and returns the individual set that was added. -
#clear ⇒ Object
Removes all the validations that have been added.
-
#each ⇒ Object
Yields each attribute and associated details per validation added.
-
#empty? ⇒ Boolean
Returns true if no validations have been added.
-
#get_schema_info(class_name = @record) ⇒ Object
Returns the schema-based validation information of the attributes.
-
#initialize(base = {}, attrs = {}) ⇒ Validations
constructor
:nodoc:.
-
#load_schema_info(class_name = @record) ⇒ Object
Adds the schema information into the validation of the attributes.
-
#size ⇒ Object
Returns the number of attributes with validations.
-
#to_s ⇒ Object
Returns the string of attributes with validations.
-
#to_xml ⇒ Object
Returns an XML representation of the validation object.
-
#validations ⇒ Object
Returns the attribute validations.
Constructor Details
#initialize(base = {}, attrs = {}) ⇒ Validations
:nodoc:
8 9 10 |
# File 'lib/validations.rb', line 8 def initialize(base={},attrs={}) # :nodoc: @record, @attrs, @schema_attrs = base, attrs, {} end |
Instance Method Details
#add(attr_name, type, configuration = {}) ⇒ Object
Adds a validation of an attribute (attr_name) to the record and returns the individual set that was added
14 15 16 17 18 |
# File 'lib/validations.rb', line 14 def add(attr_name, type, configuration={}) attribute = add_type_to_hash(attr_name, type) VALIDATIONS_INFO.each do |rule| attribute.update(rule.to_s => configuration[rule.to_sym]) unless configuration[rule.to_sym].nil? end @attrs end |
#clear ⇒ Object
Removes all the validations that have been added
40 41 42 |
# File 'lib/validations.rb', line 40 def clear @attrs = {} end |
#each ⇒ Object
Yields each attribute and associated details per validation added
50 51 52 |
# File 'lib/validations.rb', line 50 def each @attrs.each_key { |attr| @attrs[attr].each { |msg| yield attr, msg } } end |
#empty? ⇒ Boolean
Returns true if no validations have been added
55 56 57 |
# File 'lib/validations.rb', line 55 def empty? @attrs.empty? end |
#get_schema_info(class_name = @record) ⇒ Object
Returns the schema-based validation information of the attributes. This information includes the type, limit, and default values. It is categorised by the attribute name
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/validations.rb', line 28 def get_schema_info(class_name=@record) klass = Object.const_get(class_name.to_s.camelize) rescue nil if klass && klass < ActiveRecord::Base klass.columns.each do |col| attribute = add_schema_to_hash(col.name) SCHEMA_INFO.each do |info| attribute.update(info => eval("col.#{info}.to_s")) end end end @schema_attrs end |
#load_schema_info(class_name = @record) ⇒ Object
Adds the schema information into the validation of the attributes. This information includes the type, limit, and default values.
22 23 24 |
# File 'lib/validations.rb', line 22 def load_schema_info(class_name=@record) @attrs.merge(get_schema_info(class_name)) end |
#size ⇒ Object
Returns the number of attributes with validations
60 61 62 |
# File 'lib/validations.rb', line 60 def size @attrs.size end |
#to_s ⇒ Object
Returns the string of attributes with validations
65 66 67 |
# File 'lib/validations.rb', line 65 def to_s @attrs.to_s end |
#to_xml ⇒ Object
Returns an XML representation of the validation object
70 71 72 |
# File 'lib/validations.rb', line 70 def to_xml @attrs.to_xml end |
#validations ⇒ Object
Returns the attribute validations
45 46 47 |
# File 'lib/validations.rb', line 45 def validations @attrs end |