aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel
diff options
context:
space:
mode:
authorAndriy Tyurnikov <Andriy.Tyurnikov@gmail.com>2011-03-10 19:50:55 +0200
committerSantiago Pastorino <santiago@wyeworks.com>2011-03-12 21:12:44 -0200
commitf48d3d4df6c8ff6ab544f5fe384af2a0552984d7 (patch)
tree148b5ef71ed3d8fbb02ad77b66f90a15848e4f38 /activemodel
parent015192560b7e81639430d7e46c410bf6a3cd9223 (diff)
downloadrails-f48d3d4df6c8ff6ab544f5fe384af2a0552984d7.tar.gz
rails-f48d3d4df6c8ff6ab544f5fe384af2a0552984d7.tar.bz2
rails-f48d3d4df6c8ff6ab544f5fe384af2a0552984d7.zip
length validation for fixnums
Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
Diffstat (limited to 'activemodel')
-rw-r--r--activemodel/lib/active_model/validations/length.rb3
-rw-r--r--activemodel/test/cases/validations/length_validation_test.rb11
2 files changed, 13 insertions, 1 deletions
diff --git a/activemodel/lib/active_model/validations/length.rb b/activemodel/lib/active_model/validations/length.rb
index 7af6c83460..3e6f6e62e6 100644
--- a/activemodel/lib/active_model/validations/length.rb
+++ b/activemodel/lib/active_model/validations/length.rb
@@ -42,7 +42,8 @@ module ActiveModel
next unless check_value = options[key]
value ||= [] if key == :maximum
-
+
+ next if value.kind_of?(Fixnum) && value.to_s.size.send(validity_check, check_value)
next if value && value.size.send(validity_check, check_value)
errors_options = options.except(*RESERVED_OPTIONS)
diff --git a/activemodel/test/cases/validations/length_validation_test.rb b/activemodel/test/cases/validations/length_validation_test.rb
index 1e6180a938..5e4f4f5cae 100644
--- a/activemodel/test/cases/validations/length_validation_test.rb
+++ b/activemodel/test/cases/validations/length_validation_test.rb
@@ -341,6 +341,17 @@ class LengthValidationTest < ActiveModel::TestCase
assert t.errors[:content].any?
assert_equal ["Your essay must be at least 5 words."], t.errors[:content]
end
+
+ def test_validates_length_of_for_fixnum
+ Topic.validates_length_of(:approved, :is => 4)
+
+ t = Topic.new("title" => "uhohuhoh", "content" => "whatever", :approved => 1)
+ assert t.invalid?
+ assert t.errors[:approved].any?
+
+ t = Topic.new("title" => "uhohuhoh", "content" => "whatever", :approved => 1234)
+ assert t.valid?
+ end
def test_validates_length_of_for_ruby_class
Person.validates_length_of :karma, :minimum => 5