93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
# File 'lib/sexy_validations.rb', line 93
def validate!
errors.clear
validations.each do |validation|
catch(:skip_validation) do
if validation[:conditions]
validation[:conditions].each do |condition|
success = condition.call(self, validation[:attribute])
if validation[:conditions_if]
throw :skip_validation unless success
else
throw :skip_validation if success
end
end
end
case
when validation[:validator]
if errors[validation[:attribute]].empty?
validation[:validator].validate(self, validation[:attribute], send(validation[:attribute]), validation[:options])
end
when validation[:method]
send(validation[:method])
when validation[:block]
validation[:block].call
else
raise ArgumentError, "invalid validation (internal error)"
end
end
end
end
|