Module: ValidationSyncFormHelper
- Defined in:
- app/helpers/validation_sync_form_helper.rb
Instance Method Summary collapse
-
#check_model_validation(object_name, method, validation) ⇒ Object
Check to see if a given model attribute uses a given validation returns true/false.
- #find_all_models ⇒ Object
- #form_for(record, options = {}, &block) ⇒ Object
-
#get_validation_attr(object_name, method, validation, option) ⇒ Object
Check to see if a given model attribute uses a given validation returns the specified validation option.
- #get_validation_message(object_name, method, validation) ⇒ Object
Instance Method Details
#check_model_validation(object_name, method, validation) ⇒ Object
Check to see if a given model attribute uses a given validation returns true/false
42 43 44 45 46 47 48 49 |
# File 'app/helpers/validation_sync_form_helper.rb', line 42 def check_model_validation(object_name, method, validation) object_class = object_name.camelize.constantize if object_class.validators_on(method).map(&:class).include? validation true else false end end |
#find_all_models ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/helpers/validation_sync_form_helper.rb', line 16 def find_all_models models = [] # iterate over all files in folder folder = File.join(ValidationSync::Engine::APP_ROOT, "app", "models") Dir[File.join(folder, "*")].each do |filename| klass = File.basename(filename, '.rb').camelize.constantize next unless klass.ancestors.include?(ActiveRecord::Base) model = { name: klass.name.downcase, attributes: klass.new.attributes.keys } models << model end return models end |
#form_for(record, options = {}, &block) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 |
# File 'app/helpers/validation_sync_form_helper.rb', line 3 def form_for(record, = {}, &block) # If the html_options / data hashes are not # set, then let's set them as an empty hash [:html] ||= {} [:html][:data] ||= {} # Add our data-sync-validations attribute [:html][:data][:sync_validations] = [:validate].to_s super end |
#get_validation_attr(object_name, method, validation, option) ⇒ Object
Check to see if a given model attribute uses a given validation returns the specified validation option
56 57 58 59 60 61 62 |
# File 'app/helpers/validation_sync_form_helper.rb', line 56 def get_validation_attr(object_name, method, validation, option) if check_model_validation(object_name, method, validation) object_class = object_name.camelize.constantize attr = object_class.validators_on(method).find { |v| v.class == validation } return (attr.[option]) ? attr.[option] : nil end end |
#get_validation_message(object_name, method, validation) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'app/helpers/validation_sync_form_helper.rb', line 65 def (object_name, method, validation) object_class = object_name.camelize.constantize # we validate this attribute if val = object_class.validators_on(method).find { |v| v.class == validation } if val.[:message] # custom message is defined return val.[:message] else # fall back to the default message return "TODO: add default error messages" end else # we don't validate this attribute nil end end |