aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorArthur Neves <arthurnn@gmail.com>2014-03-10 11:37:33 -0400
committerArthur Neves <arthurnn@gmail.com>2014-03-10 14:10:46 -0400
commite5f15a83656f6d005dab40a30fb9f7fa2cf65d77 (patch)
tree38ccec5cb4629dc56ea1d5558b1a1f13b06040a3 /activerecord/test/cases
parent6e3ab3e15faf782f6a937ccf5574a4fb63e3e353 (diff)
downloadrails-e5f15a83656f6d005dab40a30fb9f7fa2cf65d77.tar.gz
rails-e5f15a83656f6d005dab40a30fb9f7fa2cf65d77.tar.bz2
rails-e5f15a83656f6d005dab40a30fb9f7fa2cf65d77.zip
Fixes STI when 2+ levels deep.
PR #14052 Added a regression where it was only looking for methods in one level up, So when the method was defined in a 2+ levels up the inheritance chain, the method was not found as defined.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/attribute_methods_test.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/activerecord/test/cases/attribute_methods_test.rb b/activerecord/test/cases/attribute_methods_test.rb
index 1a1e442df0..173081cb28 100644
--- a/activerecord/test/cases/attribute_methods_test.rb
+++ b/activerecord/test/cases/attribute_methods_test.rb
@@ -746,6 +746,19 @@ class AttributeMethodsTest < ActiveRecord::TestCase
assert "unknown attribute: hello", error.message
end
+ def test_methods_override_in_multi_level_subclass
+ klass = Class.new(Developer) do
+ def name
+ "dev:#{read_attribute(:name)}"
+ end
+ end
+
+ 2.times { klass = Class.new klass }
+ dev = klass.new(name: 'arthurnn')
+ dev.save!
+ assert_equal 'dev:arthurnn', dev.reload.name
+ end
+
def test_global_methods_are_overwritten
klass = Class.new(ActiveRecord::Base) do
self.table_name = 'computers'