Module: ValidationSyncFormHelper

Defined in:
app/helpers/validation_sync_form_helper.rb

Instance Method Summary collapse

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_modelsObject



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, options = {}, &block)
	# If the html_options / data hashes are not
	# set, then let's set them as an empty hash
	options[:html] ||= {}
	options[:html][:data] ||= {}

	# Add our data-sync-validations attribute
 options[:html][:data][:sync_validations] = options[: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.options[option]) ? attr.options[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 get_validation_message(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.options[:message]
      # custom message is defined
      return val.options[: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