diff options
Diffstat (limited to 'activemodel')
-rw-r--r-- | activemodel/lib/active_model/attribute_methods.rb | 41 | ||||
-rw-r--r-- | activemodel/test/cases/attribute_methods_test.rb | 31 |
2 files changed, 0 insertions, 72 deletions
diff --git a/activemodel/lib/active_model/attribute_methods.rb b/activemodel/lib/active_model/attribute_methods.rb index dba059eacd..d7ec7e6ca5 100644 --- a/activemodel/lib/active_model/attribute_methods.rb +++ b/activemodel/lib/active_model/attribute_methods.rb @@ -66,47 +66,6 @@ module ActiveModel end module ClassMethods - def define_attr_method(name, value=nil, deprecation_warning = true, &block) #:nodoc: - # This deprecation_warning param is for internal use so that we can silence - # the warning from Active Record, because we are implementing more specific - # messages there instead. - # - # It doesn't apply to the original_#{name} method as we want to warn if - # people are calling that regardless. - if deprecation_warning - ActiveSupport::Deprecation.warn("define_attr_method is deprecated and will be removed without replacement.") - end - - sing = singleton_class - sing.class_eval <<-eorb, __FILE__, __LINE__ + 1 - remove_possible_method :'original_#{name}' - remove_possible_method :'_original_#{name}' - alias_method :'_original_#{name}', :'#{name}' - define_method :'original_#{name}' do - ActiveSupport::Deprecation.warn( - "This method is generated by ActiveModel::AttributeMethods::ClassMethods#define_attr_method, " \ - "which is deprecated and will be removed." - ) - send(:'_original_#{name}') - end - eorb - if block_given? - sing.send :define_method, name, &block - else - # If we can compile the method name, do it. Otherwise use define_method. - # This is an important *optimization*, please don't change it. define_method - # has slower dispatch and consumes more memory. - if name =~ NAME_COMPILABLE_REGEXP - sing.class_eval <<-RUBY, __FILE__, __LINE__ + 1 - def #{name}; #{value.nil? ? 'nil' : value.to_s.inspect}; end - RUBY - else - value = value.to_s if value - sing.send(:define_method, name) { value } - end - end - end - # Declares a method available for all attributes with the given prefix. # Uses +method_missing+ and <tt>respond_to?</tt> to rewrite the method. # diff --git a/activemodel/test/cases/attribute_methods_test.rb b/activemodel/test/cases/attribute_methods_test.rb index 90f9b78334..0c6e49bee2 100644 --- a/activemodel/test/cases/attribute_methods_test.rb +++ b/activemodel/test/cases/attribute_methods_test.rb @@ -133,37 +133,6 @@ class AttributeMethodsTest < ActiveModel::TestCase assert_equal "value of foo bar", ModelWithAttributesWithSpaces.new.send(:'foo bar') end - test '#define_attr_method generates attribute method' do - assert_deprecated do - ModelWithAttributes.define_attr_method(:bar, 'bar') - end - - assert_respond_to ModelWithAttributes, :bar - - assert_deprecated do - assert_equal "original bar", ModelWithAttributes.original_bar - end - - assert_equal "bar", ModelWithAttributes.bar - ActiveSupport::Deprecation.silence do - ModelWithAttributes.define_attr_method(:bar) - end - assert !ModelWithAttributes.bar - end - - test '#define_attr_method generates attribute method with invalid identifier characters' do - ActiveSupport::Deprecation.silence do - ModelWithWeirdNamesAttributes.define_attr_method(:'c?d', 'c?d') - end - - assert_respond_to ModelWithWeirdNamesAttributes, :'c?d' - - ActiveSupport::Deprecation.silence do - assert_equal "original c?d", ModelWithWeirdNamesAttributes.send('original_c?d') - end - assert_equal "c?d", ModelWithWeirdNamesAttributes.send('c?d') - end - test '#alias_attribute works with attributes with spaces in their names' do ModelWithAttributesWithSpaces.define_attribute_methods([:'foo bar']) ModelWithAttributesWithSpaces.alias_attribute(:'foo_bar', :'foo bar') |