module ConditionalValidation::ValidationFlag
ConditionalValidation::ValidationFlag
is extended by model classes to add the `validation_flag` macro.
Public Instance Methods
validation_flag(*flags)
click to toggle source
Macro method for defining attr_accessor methods, and the associated enable/disable/predicate methods that wrap the attr_acessor methods, for determining when to run validation sets on a model.
@param flags [*Array<String>] the validation flag names
@example
class User validation_flag :address_attributes end
# File lib/conditional_validation/validation_flag.rb, line 15 def validation_flag(*flags) raise ArgumentError, "flags can't be empty" if flags.empty? accessor_method_names = flags.map { |flag| "_#{flag}_validation_flag" } attr_accessor(*accessor_method_names) flags.each do |flag| # def enable_address_attributes_validation # def disable_address_attributes_validation # def validate_on_address_attributes? class_eval <<-RUBY, __FILE__, __LINE__ + 1 def enable_#{flag}_validation self._#{flag}_validation_flag = true self end def disable_#{flag}_validation self._#{flag}_validation_flag = false self end def validate_on_#{flag}? !!_#{flag}_validation_flag end RUBY end end