Module: ConditionalValidation::ValidationAccessor::ClassMethods

Defined in:
lib/conditional_validation/validation_accessor.rb

Instance Method Summary collapse

Instance Method Details

#validation_accessor(*accessors) ⇒ Object

Macro method for defining an attr_accessor and various enable/disable/predicate methods that wrap the attr_acessor for determining when to run a set of validation on an ActiveRecord model.

Examples:

class User
  validation_accessor :address_attributes
end

# => Defines the following methods on instances of the User class:
#      enable_address_attributes_validation
#      disable_address_attributes_validation
#      validate_on_address_attributes?

Parameters:

  • args (*accessors)

    the section names for which to define validation accessors for



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/conditional_validation/validation_accessor.rb', line 20

def validation_accessor(*accessors)
  attr_accessor *accessors.map { |accessor| "_#{accessor}_validation_accessor" }

  accessors.each do |accessor|
    define_method "enable_#{accessor}_validation" do
      self.send("_#{accessor}_validation_accessor=", true)
      self
    end

    define_method "disable_#{accessor}_validation" do
      self.send("_#{accessor}_validation_accessor=", false)
      self
    end

    define_method "validate_on_#{accessor}?" do
      !!self.send("_#{accessor}_validation_accessor")
    end
  end
end