43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# File 'lib/sexy_validations.rb', line 43
def validates(attribute = nil, validations = nil, &block)
conditions = nil
conditions_if = nil
if validations
if validations[:if]
conditions = validations.delete(:if)
conditions_if = true
end
if validations[:unless]
raise ArgumentError, "if and unless conditions given" if condition
conditions = validations.delete(:unless)
conditions_if = false
end
conditions = [conditions] if conditions && !conditions.is_a?(Array)
end
unless validations.blank?
validations.each_pair do |validator, options|
klass = load_validator(validator)
self.validations += [{
:attribute => attribute,
:validator => klass,
:options => options,
:conditions => conditions,
:conditions_if => conditions_if,
}]
end
else
if attribute
self.validations += [{
:method => "#{attribute}_validation",
:conditions => conditions,
:conditions_if => conditions_if,
}]
else
raise ArgumentError, "at least a block has to be given" unless block_given?
self.validations += [{
:block => block,
:conditions => conditions,
:conditions_if => conditions_if,
}]
end
end
end
|