diff options
author | José Valim <jose.valim@gmail.com> | 2011-12-05 06:09:33 -0800 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2011-12-05 06:09:33 -0800 |
commit | 2985151000b9949474b8b575e25bf7ced387da02 (patch) | |
tree | e95b1014ed2d3420a03c093583d8ae411a2d55a0 /activemodel | |
parent | be482bd6d6d83aad6c281925e3a1c776bfa5e7cd (diff) | |
parent | dff19f7be2584d9eaa869de14a919aa70d029d92 (diff) | |
download | rails-2985151000b9949474b8b575e25bf7ced387da02.tar.gz rails-2985151000b9949474b8b575e25bf7ced387da02.tar.bz2 rails-2985151000b9949474b8b575e25bf7ced387da02.zip |
Merge pull request #3859 from kuroda/human_attribute_name
Fix human_attribute_name to handle names with dots
Diffstat (limited to 'activemodel')
-rw-r--r-- | activemodel/lib/active_model/translation.rb | 8 | ||||
-rw-r--r-- | activemodel/test/cases/translation_test.rb | 10 |
2 files changed, 16 insertions, 2 deletions
diff --git a/activemodel/lib/active_model/translation.rb b/activemodel/lib/active_model/translation.rb index 6d64c81b5f..d776fe0ce6 100644 --- a/activemodel/lib/active_model/translation.rb +++ b/activemodel/lib/active_model/translation.rb @@ -43,8 +43,12 @@ module ActiveModel # # Specify +options+ with additional translating options. def human_attribute_name(attribute, options = {}) - defaults = lookup_ancestors.map do |klass| - :"#{self.i18n_scope}.attributes.#{klass.model_name.i18n_key}.#{attribute}" + defaults = [] + lookup_ancestors.each do |klass| + if attribute.match(/\./) + defaults << :"#{self.i18n_scope}.attributes.#{klass.model_name.i18n_key}.#{attribute.gsub(/\./, '/')}" + end + defaults << :"#{self.i18n_scope}.attributes.#{klass.model_name.i18n_key}.#{attribute}" end defaults << :"attributes.#{attribute}" diff --git a/activemodel/test/cases/translation_test.rb b/activemodel/test/cases/translation_test.rb index 1b1d972d5c..c3d60d6c8b 100644 --- a/activemodel/test/cases/translation_test.rb +++ b/activemodel/test/cases/translation_test.rb @@ -56,6 +56,16 @@ class ActiveModelI18nTests < ActiveModel::TestCase assert_equal 'person gender attribute', Person::Gender.human_attribute_name('attribute') end + def test_translated_nested_model_attributes + I18n.backend.store_translations 'en', :activemodel => {:attributes => {:person => {:"addresses/street" => 'Street'}}} + assert_equal 'Street', Person.human_attribute_name('addresses.street') + end + + def test_translated_nested_model_attributes_with_deprecated_lookup_style + I18n.backend.store_translations 'en', :activemodel => {:attributes => {:person => {:addresses => {:street => 'Street'}}}} + assert_equal 'Street', Person.human_attribute_name('addresses.street') + end + def test_translated_model_names I18n.backend.store_translations 'en', :activemodel => {:models => {:person => 'person model'} } assert_equal 'person model', Person.model_name.human |