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
34 35 36 |
# File 'lib/volt/models/validations.rb', line 34 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
72 73 74 |
# File 'lib/volt/models/validations.rb', line 72 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.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/volt/models/validations.rb', line 78 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 # Get the previous model from the buffer save_to = [:save_to] if save_to && save_to.is_a?(Volt::Model) old_model = save_to else old_model = nil end errors = run_validations(errors, merge, marked_only, old_model) # 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, old_model) errors end |
#mark_all_fields! ⇒ Object
Marks all fields, useful for when a model saves.
50 51 52 53 54 55 56 57 |
# File 'lib/volt/models/validations.rb', line 50 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.
40 41 42 |
# File 'lib/volt/models/validations.rb', line 40 def mark_field!(field_name) marked_fields[field_name] = true end |
#marked_errors ⇒ Object
60 61 62 |
# File 'lib/volt/models/validations.rb', line 60 def marked_errors errors(true) end |
#marked_fields ⇒ Object
44 45 46 |
# File 'lib/volt/models/validations.rb', line 44 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!
67 68 69 |
# File 'lib/volt/models/validations.rb', line 67 def server_errors @server_errors ||= ReactiveHash.new end |