aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xactiverecord/lib/active_record/validations.rb4
-rwxr-xr-xactiverecord/test/cases/validations_test.rb14
2 files changed, 17 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/validations.rb b/activerecord/lib/active_record/validations.rb
index c321464335..aded3c0e85 100755
--- a/activerecord/lib/active_record/validations.rb
+++ b/activerecord/lib/active_record/validations.rb
@@ -860,7 +860,9 @@ module ActiveRecord
when :odd, :even
record.errors.add(attr_name, configuration[:message] || ActiveRecord::Errors.default_error_messages[option]) unless raw_value.to_i.method(ALL_NUMERICALITY_CHECKS[option])[]
else
- record.errors.add(attr_name, configuration[:message] || (ActiveRecord::Errors.default_error_messages[option] % configuration[option])) unless raw_value.method(ALL_NUMERICALITY_CHECKS[option])[configuration[option]]
+ message = configuration[:message] || ActiveRecord::Errors.default_error_messages[option]
+ message = message % configuration[option] if configuration[option]
+ record.errors.add(attr_name, message) unless raw_value.method(ALL_NUMERICALITY_CHECKS[option])[configuration[option]]
end
end
end
diff --git a/activerecord/test/cases/validations_test.rb b/activerecord/test/cases/validations_test.rb
index 3d83b8d4d1..d5b8b4d88b 100755
--- a/activerecord/test/cases/validations_test.rb
+++ b/activerecord/test/cases/validations_test.rb
@@ -1405,6 +1405,20 @@ class ValidatesNumericalityTest < ActiveRecord::TestCase
valid!([2])
end
+ def test_validates_numericality_with_numeric_message
+ Topic.validates_numericality_of :approved, :less_than => 4, :message => "smaller than %d"
+ topic = Topic.new("title" => "numeric test", "approved" => 10)
+
+ assert !topic.valid?
+ assert_equal "smaller than 4", topic.errors.on(:approved)
+
+ Topic.validates_numericality_of :approved, :greater_than => 4, :message => "greater than %d"
+ topic = Topic.new("title" => "numeric test", "approved" => 1)
+
+ assert !topic.valid?
+ assert_equal "greater than 4", topic.errors.on(:approved)
+ end
+
private
def invalid!(values, error=nil)
with_each_topic_approved_value(values) do |topic, value|