diff options
author | Santiago Pastorino <santiago@wyeworks.com> | 2010-05-12 14:29:39 -0300 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-05-12 21:02:16 +0200 |
commit | 6334006b815eadd83575fe6d00e9010838530ee7 (patch) | |
tree | 2634aafd2705b09fd07f1a262e845ba1bc741e28 /activemodel | |
parent | bea3c26833ad3e1e94f7331e0553a4e2164e7de5 (diff) | |
download | rails-6334006b815eadd83575fe6d00e9010838530ee7.tar.gz rails-6334006b815eadd83575fe6d00e9010838530ee7.tar.bz2 rails-6334006b815eadd83575fe6d00e9010838530ee7.zip |
Revert "Refactor of active_model/naming.rb and allow collection and element to be writable"
This reverts commit f7862b2c34b5b298bf7b937c55f0637ebfe43a25.
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'activemodel')
-rw-r--r-- | activemodel/lib/active_model/naming.rb | 34 | ||||
-rw-r--r-- | activemodel/test/cases/naming_test.rb | 30 |
2 files changed, 5 insertions, 59 deletions
diff --git a/activemodel/lib/active_model/naming.rb b/activemodel/lib/active_model/naming.rb index a860388bae..8cdd3d2fe8 100644 --- a/activemodel/lib/active_model/naming.rb +++ b/activemodel/lib/active_model/naming.rb @@ -3,36 +3,18 @@ require 'active_support/inflector' module ActiveModel class Name < String - attr_reader :singular, :plural, :element + attr_reader :singular, :plural, :element, :collection, :partial_path + alias_method :cache_key, :collection def initialize(klass) super(klass.name) @klass = klass @singular = ActiveSupport::Inflector.underscore(self).tr('/', '_').freeze @plural = ActiveSupport::Inflector.pluralize(@singular).freeze - @collection = nil - self.element = ActiveSupport::Inflector.underscore(ActiveSupport::Inflector.demodulize(self)).freeze - end - - def element=(element) - @element = element + @element = ActiveSupport::Inflector.underscore(ActiveSupport::Inflector.demodulize(self)).freeze @human = ActiveSupport::Inflector.humanize(@element).freeze - @default_collection = nil - @partial_path = nil - end - - def collection - @collection || default_collection - end - alias_method :cache_key, :collection - - def collection=(collection) - @collection = collection - @partial_path = nil - end - - def partial_path - @partial_path ||= "#{collection}/#{@element}" + @collection = ActiveSupport::Inflector.tableize(self).freeze + @partial_path = "#{@collection}/#{@element}".freeze end # Transform the model name into a more humane format, using I18n. By default, @@ -52,12 +34,6 @@ module ActiveModel options.reverse_merge! :scope => [@klass.i18n_scope, :models], :count => 1, :default => defaults I18n.translate(defaults.shift, options) end - - private - - def default_collection - @default_collection ||= ActiveSupport::Inflector.tableize(self.sub(/[^:]*$/, @element)).freeze - end end # ActiveModel::Naming is a module that creates a +model_name+ method on your diff --git a/activemodel/test/cases/naming_test.rb b/activemodel/test/cases/naming_test.rb index 3918002360..dc39b84ed8 100644 --- a/activemodel/test/cases/naming_test.rb +++ b/activemodel/test/cases/naming_test.rb @@ -18,26 +18,6 @@ class NamingTest < ActiveModel::TestCase assert_equal 'track_back', @model_name.element end - def test_set_element - @model_name.element = 'foo' - - assert_equal 'foo', @model_name.element - assert_equal 'Foo', @model_name.human - assert_equal 'post/foos', @model_name.collection - assert_equal 'post/foos/foo', @model_name.partial_path - end - - def test_human - assert_equal 'Track back', @model_name.human - end - - def test_set_collection - @model_name.collection = 'foo' - - assert_equal 'foo', @model_name.collection - assert_equal 'foo/track_back', @model_name.partial_path - end - def test_collection assert_equal 'post/track_backs', @model_name.collection end @@ -45,14 +25,4 @@ class NamingTest < ActiveModel::TestCase def test_partial_path assert_equal 'post/track_backs/track_back', @model_name.partial_path end - - def test_should_preserve_custom_collection - @model_name.collection = 'bar' - @model_name.element = 'foo' - - assert_equal 'foo', @model_name.element - assert_equal 'Foo', @model_name.human - assert_equal 'bar', @model_name.collection - assert_equal 'bar/foo', @model_name.partial_path - end end |