Module: Arson::ClassMethods

Defined in:
lib/arson.rb

Instance Method Summary collapse

Instance Method Details

#arsonObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/arson.rb', line 6

def arson
  class_eval <<-EOC
    @@arson_validations = {}

    def to_arson(class_name=nil)
      @class_name ||= class_name || self.class.to_s
      self.valid?
      ActiveSupport::JSON.encode({@class_name=>instance_values.update("arson_validations"=>@@arson_validations)})
    end

    protected

    def self.validates_presence_of(*attr_names)
      add_arson_validation("presence",attr_names.clone)
      super
    end

    def self.validates_format_of(*attr_names)
      add_arson_validation("format",attr_names.clone)
      super
    end

    def self.add_arson_validation(validation, configuration)
      validation_options = configuration.extract_options!
      method = configuration.flatten.to_s
      @@arson_validations[method] ||= []
      @@arson_validations[method] << {validation=>validation_options}
    end
  EOC
end