From 3eed3272d7fc79040b6eb3b8586be0d8875d8203 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 25 Jun 2005 11:24:43 +0000 Subject: Fixed that validations didn't respecting custom setting for too_short, too_long messages #1437 [Marcel Molina] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1509 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/CHANGELOG | 2 ++ activerecord/lib/active_record/validations.rb | 10 +++------- activerecord/test/validations_test.rb | 9 +++++++++ 3 files changed, 14 insertions(+), 7 deletions(-) (limited to 'activerecord') diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index b487f442b3..c7526beb83 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed that validations didn't respecting custom setting for too_short, too_long messages #1437 [Marcel Molina] + * Fixed that clear_association_cache doesn't delete new associations on new records (so you can safely place new records in the session with Action Pack without having new associations wiped) #1494 [cluon] * Fixed that calling Model.find([]) returns [] and doesn't throw an exception #1379 diff --git a/activerecord/lib/active_record/validations.rb b/activerecord/lib/active_record/validations.rb index d58502e98b..e42b306e10 100755 --- a/activerecord/lib/active_record/validations.rb +++ b/activerecord/lib/active_record/validations.rb @@ -213,12 +213,6 @@ module ActiveRecord :message => nil }.freeze - DEFAULT_SIZE_VALIDATION_OPTIONS = DEFAULT_VALIDATION_OPTIONS.merge( - :too_long => ActiveRecord::Errors.default_error_messages[:too_long], - :too_short => ActiveRecord::Errors.default_error_messages[:too_short], - :wrong_length => ActiveRecord::Errors.default_error_messages[:wrong_length] - ).freeze - ALL_RANGE_OPTIONS = [ :is, :within, :in, :minimum, :maximum ].freeze def validate(*methods, &block) @@ -404,7 +398,9 @@ module ActiveRecord # method, proc or string should return or evaluate to a true or false value. def validates_length_of(*attrs) # Merge given options with defaults. - options = DEFAULT_SIZE_VALIDATION_OPTIONS.dup + options = {:too_long => ActiveRecord::Errors.default_error_messages[:too_long], + :too_short => ActiveRecord::Errors.default_error_messages[:too_short], + :wrong_length => ActiveRecord::Errors.default_error_messages[:wrong_length]}.merge(DEFAULT_VALIDATION_OPTIONS) options.update(attrs.pop.symbolize_keys) if attrs.last.is_a?(Hash) # Ensure that one and only one range option is specified. diff --git a/activerecord/test/validations_test.rb b/activerecord/test/validations_test.rb index 2cce21597a..2ff618b0e6 100755 --- a/activerecord/test/validations_test.rb +++ b/activerecord/test/validations_test.rb @@ -493,6 +493,15 @@ class ValidationsTest < Test::Unit::TestCase end end + def test_validates_length_with_globaly_modified_error_message + ActiveRecord::Errors.default_error_messages[:too_short] = 'tu est trops petit hombre %d' + Topic.validates_length_of :title, :minimum => 10 + t = Topic.create(:title => 'too short') + assert !t.valid? + + assert_equal 'tu est trops petit hombre 10', t.errors['title'] + end + def test_validates_size_of_association assert_nothing_raised { Topic.validates_size_of :replies, :minimum => 1 } t = Topic.new('title' => 'noreplies', 'content' => 'whatever') -- cgit v1.2.3