From e5f15a83656f6d005dab40a30fb9f7fa2cf65d77 Mon Sep 17 00:00:00 2001 From: Arthur Neves Date: Mon, 10 Mar 2014 11:37:33 -0400 Subject: 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. --- activerecord/test/cases/attribute_methods_test.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'activerecord/test/cases') 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' -- cgit v1.2.3