public
Description: Ruby on Rails
Homepage: http://rubyonrails.org
Clone URL: git://github.com/rails/rails.git
translates when a message symbol has been set on builtin validations

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
iain (author)
Sun Aug 31 03:14:24 -0700 2008
jeremy (committer)
Sun Aug 31 13:24:08 -0700 2008
commit  76797b443929005f43512a147e97f02f3145ed81
tree    43b6b5ed600a1d547dc939529d3a575fd5109c3c
parent  a1eb4e11c2cccb91483fa15f1a1a0b2ae518d2cf
...
87
88
89
 
 
90
91
92
...
95
96
97
98
99
100
101
...
87
88
89
90
91
92
93
94
...
97
98
99
 
100
101
102
0
@@ -87,6 +87,8 @@ module ActiveRecord
0
     # </ol>
0
     def generate_message(attribute, message = :invalid, options = {})
0
 
0
+      message, options[:default] = options[:default], message if options[:default].is_a?(Symbol)
0
+
0
       defaults = @base.class.self_and_descendents_from_active_record.map do |klass| 
0
         [ :"models.#{klass.name.underscore}.attributes.#{attribute}.#{message}", 
0
           :"models.#{klass.name.underscore}.#{message}" ]
0
@@ -95,7 +97,6 @@ module ActiveRecord
0
       defaults << options.delete(:default)
0
       defaults = defaults.compact.flatten << :"messages.#{message}"
0
 
0
-      model_name = @base.class.name
0
       key = defaults.shift
0
       value = @base.respond_to?(attribute) ? @base.send(attribute) : nil
0
 
...
675
676
677
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
678
679
680
...
855
856
857
 
858
...
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
...
887
888
889
890
891
0
@@ -675,6 +675,38 @@ class ActiveRecordValidationsI18nTests < Test::Unit::TestCase
0
     replied_topic.valid?
0
     assert_equal 'global message', replied_topic.errors.on(:replies)
0
   end
0
+
0
+  def test_validations_with_message_symbol_must_translate
0
+    I18n.backend.store_translations 'en-US', :activerecord => {:errors => {:messages => {:custom_error => "I am a custom error"}}}
0
+    Topic.validates_presence_of :title, :message => :custom_error
0
+    @topic.title = nil
0
+    @topic.valid?
0
+    assert_equal "I am a custom error", @topic.errors.on(:title)
0
+  end
0
+
0
+  def test_validates_with_message_symbol_must_translate_per_attribute
0
+    I18n.backend.store_translations 'en-US', :activerecord => {:errors => {:models => {:topic => {:attributes => {:title => {:custom_error => "I am a custom error"}}}}}}
0
+    Topic.validates_presence_of :title, :message => :custom_error
0
+    @topic.title = nil
0
+    @topic.valid?
0
+    assert_equal "I am a custom error", @topic.errors.on(:title)
0
+  end
0
+
0
+  def test_validates_with_message_symbol_must_translate_per_model
0
+    I18n.backend.store_translations 'en-US', :activerecord => {:errors => {:models => {:topic => {:custom_error => "I am a custom error"}}}}
0
+    Topic.validates_presence_of :title, :message => :custom_error
0
+    @topic.title = nil
0
+    @topic.valid?
0
+    assert_equal "I am a custom error", @topic.errors.on(:title)
0
+  end
0
+
0
+  def test_validates_with_message_string
0
+    Topic.validates_presence_of :title, :message => "I am a custom error"
0
+    @topic.title = nil
0
+    @topic.valid?
0
+    assert_equal "I am a custom error", @topic.errors.on(:title)
0
+  end
0
+
0
 end
0
 
0
 class ActiveRecordValidationsGenerateMessageI18nTests < Test::Unit::TestCase
0
@@ -855,4 +887,5 @@ class ActiveRecordValidationsGenerateMessageI18nTests < Test::Unit::TestCase
0
   def test_generate_message_even_with_default_message
0
     assert_equal "must be even", @topic.errors.generate_message(:title, :even, :default => nil, :value => 'title', :count => 10)
0
   end
0
+
0
 end

Comments