Module: Mikado::ClassMethods
- Defined in:
- lib/mikado/conditional_validation.rb
Instance Method Summary collapse
- #mikado(*args, &block) ⇒ Object
- #mikado_validation ⇒ Object
- #mikado_validation=(value) ⇒ Object
- #modify_validations ⇒ Object
- #modify_with_mikado(attr_names) ⇒ Object
Instance Method Details
#mikado(*args, &block) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/mikado/conditional_validation.rb', line 13 def mikado(*args, &block) # set flag that were in mikado # we have to monkey patch the validation methods # these should check if were in mikado # and add the condition to the :if param # then we can call class_eval self.mikado_validation = args class_eval &block self.mikado_validation = nil # remove the mikado flag end |
#mikado_validation ⇒ Object
33 34 35 36 |
# File 'lib/mikado/conditional_validation.rb', line 33 def mikado_validation return @@mikado if defined? @@mikado return nil end |
#mikado_validation=(value) ⇒ Object
29 30 31 |
# File 'lib/mikado/conditional_validation.rb', line 29 def mikado_validation=(value) @@mikado = value end |
#modify_validations ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/mikado/conditional_validation.rb', line 38 def modify_validations meths = methods.map { |m| m if m.to_s.starts_with?("validates_") }.compact meths |= %w( validate validate_on_create validate_on_update ) meths.each do |method| (class << self; self; end).instance_eval do define_method "#{method}_with_mikado" do |*attr_names, &block| attrs = modify_with_mikado(attr_names) return self.send("#{method}_without_mikado", *attrs, &block) end alias_method_chain method, "mikado" end end end |
#modify_with_mikado(attr_names) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/mikado/conditional_validation.rb', line 55 def modify_with_mikado(attr_names) return attr_names unless mikado_validation = attr_names. = .dup if Mikado::Utility.is_ar_3? [:if] = [] if .blank? [:if] = [[:if]] if ![:if].is_a?(Array) [:if] = [:if] | mikado_validation attr_names << attr_names end |