Take the 2008 Git User's Survey and help out! [ hide ]

public
Description: My assistance repo w/ minor tweaks (original @ http://assistance.rubyforge.org/svn/trunk)
Homepage: http://assistance.rubyforge.org
Clone URL: git://github.com/bricooke/assistance.git
Search Repo:
Added the ability to pass :if => Proc to each validation type
bricooke (author)
Sat Mar 08 05:24:57 -0800 2008
commit  ca2dac75a2059fec0249e8b0467f646aedddf003
tree    6be7736042d9855017cf3cf054fb2e1afe544158
parent  f12a5285e3904c9139af29b1420876206e62af30
...
156
157
158
 
159
160
161
...
168
169
170
 
171
172
173
...
185
186
187
 
188
189
190
...
199
200
201
 
202
203
204
...
227
228
229
 
230
231
232
...
239
240
241
 
242
243
244
...
156
157
158
159
160
161
162
...
169
170
171
172
173
174
175
...
187
188
189
190
191
192
193
...
202
203
204
205
206
207
208
...
231
232
233
234
235
236
237
...
244
245
246
247
248
249
250
0
@@ -156,6 +156,7 @@ module Validation
0
       }.merge!(atts.extract_options!)
0
       
0
       validates_each(*atts) do |o, a, v|
0
+ next if opts[:if].kind_of?(Proc) && !opts[:if].call(o)
0
         next if (v.nil? && opts[:allow_nil]) || (v.blank? && opts[:allow_blank])
0
         o.errors[a] << opts[:message] unless v == opts[:accept]
0
       end
0
@@ -168,6 +169,7 @@ module Validation
0
       }.merge!(atts.extract_options!)
0
       
0
       validates_each(*atts) do |o, a, v|
0
+ next if opts[:if].kind_of?(Proc) && !opts[:if].call(o)
0
         next if (v.nil? && opts[:allow_nil]) || (v.blank? && opts[:allow_blank])
0
         c = o.send(:"#{a}_confirmation")
0
         o.errors[a] << opts[:message] unless v == c
0
@@ -185,6 +187,7 @@ module Validation
0
       end
0
       
0
       validates_each(*atts) do |o, a, v|
0
+ next if opts[:if].kind_of?(Proc) && !opts[:if].call(o)
0
         next if (v.nil? && opts[:allow_nil]) || (v.blank? && opts[:allow_blank])
0
         o.errors[a] << opts[:message] unless v.to_s =~ opts[:with]
0
       end
0
@@ -199,6 +202,7 @@ module Validation
0
       }.merge!(atts.extract_options!)
0
       
0
       validates_each(*atts) do |o, a, v|
0
+ next if opts[:if].kind_of?(Proc) && !opts[:if].call(o)
0
         next if (v.nil? && opts[:allow_nil]) || (v.blank? && opts[:allow_blank])
0
         if m = opts[:maximum]
0
           o.errors[a] << (opts[:message] || opts[:too_long]) unless v && v.size <= m
0
@@ -227,6 +231,7 @@ module Validation
0
       re = opts[:only_integer] ? INTEGER_RE : NUMBER_RE
0
       
0
       validates_each(*atts) do |o, a, v|
0
+ next if opts[:if].kind_of?(Proc) && !opts[:if].call(o)
0
         next if (v.nil? && opts[:allow_nil]) || (v.blank? && opts[:allow_blank])
0
         o.errors[a] << opts[:message] unless v.to_s =~ re
0
       end
0
@@ -239,6 +244,7 @@ module Validation
0
       }.merge!(atts.extract_options!)
0
       
0
       validates_each(*atts) do |o, a, v|
0
+ next if opts[:if].kind_of?(Proc) && !opts[:if].call(o)
0
         o.errors[a] << opts[:message] unless v && !v.blank?
0
       end
0
     end
...
191
192
193
 
 
 
 
 
194
195
196
...
202
203
204
 
 
 
 
 
 
 
 
205
206
207
...
210
211
212
 
 
 
 
 
 
213
214
215
...
244
245
246
 
 
 
 
 
247
248
249
...
270
271
272
 
 
 
 
 
 
273
274
275
...
288
289
290
 
 
 
 
 
 
 
 
 
 
291
292
293
...
191
192
193
194
195
196
197
198
199
200
201
...
207
208
209
210
211
212
213
214
215
216
217
218
219
220
...
223
224
225
226
227
228
229
230
231
232
233
234
...
263
264
265
266
267
268
269
270
271
272
273
...
294
295
296
297
298
299
300
301
302
303
304
305
...
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
0
@@ -191,6 +191,11 @@ describe "Validations" do
0
     @m.should_not be_valid
0
   end
0
 
0
+ specify "should not validate acceptance_of with if => false" do
0
+ @c.validates_acceptance_of :value, :allow_nil => false, :if => lambda {|m| false}
0
+ @m.should be_valid
0
+ end
0
+
0
   specify "should validate confirmation_of" do
0
     @c.send(:attr_accessor, :value_confirmation)
0
     @c.validates_confirmation_of :value
0
@@ -202,6 +207,14 @@ describe "Validations" do
0
     @m.should be_valid
0
   end
0
 
0
+ specify "should not validate confirmation_of :if => false" do
0
+ @c.send(:attr_accessor, :value_confirmation)
0
+ @c.validates_confirmation_of :value, :if => lambda {|m| false}
0
+
0
+ @m.value = 'blah'
0
+ @m.should be_valid
0
+ end
0
+
0
   specify "should validate format_of" do
0
     @c.validates_format_of :value, :with => /.+_.+/
0
     @m.value = 'abc_'
0
@@ -210,6 +223,12 @@ describe "Validations" do
0
     @m.should be_valid
0
   end
0
   
0
+ specify "should not validate format_of :if => false" do
0
+ @c.validates_format_of :value, :with => /.+_.+/, :if => lambda {|m| false}
0
+ @m.value = 'abc_'
0
+ @m.should be_valid
0
+ end
0
+
0
   specify "should raise for validate_format_of without regexp" do
0
     proc {@c.validates_format_of :value}.should raise_error(ArgumentError)
0
     proc {@c.validates_format_of :value, :with => :blah}.should raise_error(ArgumentError)
0
@@ -244,6 +263,11 @@ describe "Validations" do
0
     @m.should_not be_valid
0
   end
0
 
0
+ specify "should not validate length_of :if => false" do
0
+ @c.validates_length_of :value, :within => 2..5, :if => Proc.new {|m| m.value != nil}
0
+ @m.should be_valid
0
+ end
0
+
0
   specify "should validate length_of with is" do
0
     @c.validates_length_of :value, :is => 3
0
     @m.should_not be_valid
0
@@ -270,6 +294,12 @@ describe "Validations" do
0
     @m.should be_valid
0
   end
0
 
0
+ specify "should not validate numericality_of :if => false" do
0
+ @c.validates_numericality_of :value, :if => lambda {|m| m.value != 'blah'}
0
+ @m.value = 'blah'
0
+ @m.should be_valid
0
+ end
0
+
0
   specify "should validate numericality_of with only_integer" do
0
     @c.validates_numericality_of :value, :only_integer => true
0
     @m.value = 'blah'
0
@@ -288,6 +318,16 @@ describe "Validations" do
0
     @m.value = 1234
0
     @m.should be_valid
0
   end
0
+
0
+ specify "should not validate presence_of :if => false" do
0
+ @c.validates_presence_of :value, :if => Proc.new {|s| false}
0
+ @m.should be_valid
0
+ end
0
+
0
+ specify "should validate presence of :if => true" do
0
+ @c.validates_presence_of :value, :if => Proc.new {|s| true}
0
+ @m.should_not be_valid
0
+ end
0
 end
0
 
0
 context "Superclass validations" do

Comments

    No one has commented yet.