require 'active_support/concern' require 'fluent/validation/version' module Fluent module Validation extend ActiveSupport::Concern class_methods do def attributes @attributes ||= [] return @attributes end def mandatories(*fields) fields.each do |field| if field.is_a?(Hash) self.mandatory(field.keys[0], field.values[0]) else self.mandatory(field) end end end def optionals(*fields) fields.each do |field| if field.is_a?(Hash) self.optional(field.keys[0], field.values[0]) else self.optional(field) end end end def mandatory(field, options={}) self.attributes << field self.validates(field, options.merge(presence: true)) end def optional(field, options={}) self.attributes << field self.validates(field, options) end end end end