class Lipstick::Helpers::FormValidationBuilder
Public Class Methods
new(sym)
click to toggle source
# File lib/lipstick/helpers/form_validation_builder.rb, line 6 def initialize(sym) @rules = {} @messages = {} @sym = sym end
Public Instance Methods
auto_validate(obj, *fields)
click to toggle source
# File lib/lipstick/helpers/form_validation_builder.rb, line 26 def auto_validate(obj, *fields) unless obj.class.respond_to?(:lipstick_auto_validators) raise("#{obj.class.name} does not include Lipstick::AutoValidation") end validators = obj.class.lipstick_auto_validators validators.slice(*fields).each do |field, opts| validate_field(field, opts) end end
to_h()
click to toggle source
# File lib/lipstick/helpers/form_validation_builder.rb, line 12 def to_h { rules: @rules, messages: @messages } end
validate_field(field, opts)
click to toggle source
# File lib/lipstick/helpers/form_validation_builder.rb, line 16 def validate_field(field, opts) target = wrap_name(field) opts.each do |k, v| next validate_with_hash(target, k, v) if v.is_a?(Hash) validate_with_param(target, k, v) end end
Private Instance Methods
add_message(target, key, value)
click to toggle source
# File lib/lipstick/helpers/form_validation_builder.rb, line 59 def add_message(target, key, value) @messages[target] ||= {} @messages[target][key] = value end
add_rule(target, key, value)
click to toggle source
# File lib/lipstick/helpers/form_validation_builder.rb, line 54 def add_rule(target, key, value) @rules[target] ||= {} @rules[target][key] = value end
validate_with_hash(target, validation, opts)
click to toggle source
# File lib/lipstick/helpers/form_validation_builder.rb, line 39 def validate_with_hash(target, validation, opts) message = opts.delete(:message) add_message(target, validation, message) if message return validate_with_param(target, validation, true) if opts.empty? return validate_with_param(target, validation, opts[:param]) if opts.keys == [:param] add_rule(target, validation, opts) end
validate_with_param(target, validation, param)
click to toggle source
# File lib/lipstick/helpers/form_validation_builder.rb, line 50 def validate_with_param(target, validation, param) add_rule(target, validation, param) end
wrap_name(name)
click to toggle source
# File lib/lipstick/helpers/form_validation_builder.rb, line 64 def wrap_name(name) return name if @sym.nil? "#{@sym}[#{name}]" end