Module: Volt::Validations
- Included in:
- Model
- Defined in:
- lib/volt/models/validations.rb
Overview
Include in any class to get validation logic
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#clear_server_errors(key) ⇒ Object
When a field is changed, we want to clear any errors from the server.
-
#errors(marked_only = false) ⇒ Object
TODO: Errors is being called for any validation change.
-
#mark_all_fields! ⇒ Object
Marks all fields, useful for when a model saves.
-
#mark_field!(field_name) ⇒ Object
Once a field is ready, we can use include_in_errors! to start showing its errors.
- #marked_errors ⇒ Object
- #marked_fields ⇒ Object
-
#server_errors ⇒ Object
server errors are errors that come back from the server when we save! Any changes to the associated fields will clear the error until another save!.
Class Method Details
.included(base) ⇒ Object
33 34 35 |
# File 'lib/volt/models/validations.rb', line 33 def self.included(base) base.send :extend, ClassMethods end |
Instance Method Details
#clear_server_errors(key) ⇒ Object
When a field is changed, we want to clear any errors from the server
71 72 73 |
# File 'lib/volt/models/validations.rb', line 71 def clear_server_errors(key) @server_errors.delete(key) end |
#errors(marked_only = false) ⇒ Object
TODO: Errors is being called for any validation change. We should have errors return a hash like object that only calls the validation for each one.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/volt/models/validations.rb', line 77 def errors(marked_only = false) errors = {} # Merge into errors, combining any error arrays merge = proc do |new_errors| errors.merge!(new_errors) do |key, new_val, old_val| new_val + old_val end end errors = run_validations(errors, merge, marked_only) # See if any server errors are in place and merge them in if they are if Volt.client? errors = merge.call(server_errors.to_h) end errors = run_custom_validations(errors, merge) errors end |
#mark_all_fields! ⇒ Object
Marks all fields, useful for when a model saves.
49 50 51 52 53 54 55 56 |
# File 'lib/volt/models/validations.rb', line 49 def mark_all_fields! validations = self.class.validations if validations validations.each_key do |key| mark_field!(key.to_sym) end end end |
#mark_field!(field_name) ⇒ Object
Once a field is ready, we can use include_in_errors! to start showing its errors.
39 40 41 |
# File 'lib/volt/models/validations.rb', line 39 def mark_field!(field_name) marked_fields[field_name] = true end |
#marked_errors ⇒ Object
59 60 61 |
# File 'lib/volt/models/validations.rb', line 59 def marked_errors errors(true) end |
#marked_fields ⇒ Object
43 44 45 |
# File 'lib/volt/models/validations.rb', line 43 def marked_fields @marked_fields ||= ReactiveHash.new end |
#server_errors ⇒ Object
server errors are errors that come back from the server when we save! Any changes to the associated fields will clear the error until another save!
66 67 68 |
# File 'lib/volt/models/validations.rb', line 66 def server_errors @server_errors ||= ReactiveHash.new end |