From abbda465a1103d8605adb7764f770200e21a1a01 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Fri, 14 May 2010 19:53:30 -0300 Subject: [PATCH] reset quoted_table_name after set_table_name [#4568 state:committed] --- activerecord/lib/active_record/base.rb | 8 ++++++-- activerecord/test/cases/base_test.rb | 11 +++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index 650a91b..8e4f075 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -647,8 +647,12 @@ module ActiveRecord #:nodoc: reset_table_name end + def default_quoted_table_name + connection.quote_table_name(table_name) + end + def quoted_table_name - @quoted_table_name ||= connection.quote_table_name(table_name) + @quoted_table_name ||= default_quoted_table_name end def reset_table_name #:nodoc: @@ -668,7 +672,6 @@ module ActiveRecord #:nodoc: name = "#{full_table_name_prefix}#{contained}#{undecorated_table_name(base.name)}#{table_name_suffix}" end - @quoted_table_name = nil set_table_name(name) name end @@ -703,6 +706,7 @@ module ActiveRecord #:nodoc: # end def set_table_name(value = nil, &block) define_attr_method :table_name, value, &block + @quoted_table_name = default_quoted_table_name end alias :table_name= :set_table_name diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index bbc4e54..b8323dd 100755 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -1793,6 +1793,17 @@ class BasicsTest < ActiveRecord::TestCase assert_equal "bar", k.table_name end + def test_quoted_table_name_after_set_table_name + k = Class.new( ActiveRecord::Base ) + k.set_table_name "foo" + assert_equal "foo", k.table_name + assert_equal k.connection.quote_table_name("foo"), k.quoted_table_name + + k.set_table_name "bar" + assert_equal "bar", k.table_name + assert_equal k.connection.quote_table_name("bar"), k.quoted_table_name + end + def test_set_table_name_with_block k = Class.new( ActiveRecord::Base ) k.set_table_name { "ks" } -- 1.7.1