Speed up the setting of table_name. Closes #2428.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2520 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
08a010eb1b
commit
d736568f41
@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Speed up the setting of table_name. #2428. [skaes@web.de]
|
||||
|
||||
* Optimize instantiation of STI subclass records. In partial fullfilment of #1236. [skaes@web.de]
|
||||
|
||||
* Fix typo of 'constrains' to 'contraints'. #2069. [Michael Schuerig <michael@schuerig.de>]
|
||||
|
@ -552,7 +552,13 @@ def serialized_attributes
|
||||
# set_table_name "mice"
|
||||
# end
|
||||
def table_name
|
||||
"#{table_name_prefix}#{undecorated_table_name(class_name_of_active_record_descendant(self))}#{table_name_suffix}"
|
||||
reset_table_name
|
||||
end
|
||||
|
||||
def reset_table_name
|
||||
name = "#{table_name_prefix}#{undecorated_table_name(class_name_of_active_record_descendant(self))}#{table_name_suffix}"
|
||||
set_table_name name
|
||||
name
|
||||
end
|
||||
|
||||
# Defines the primary key field -- can be overridden in subclasses. Overwriting will negate any effect of the
|
||||
|
@ -296,31 +296,42 @@ def test_table_name_guesses
|
||||
assert_equal "master_credit_cards", MasterCreditCard.table_name
|
||||
|
||||
ActiveRecord::Base.pluralize_table_names = false
|
||||
[Category, Smarts, CreditCard, MasterCreditCard].each{|c| c.reset_table_name}
|
||||
assert_equal "category", Category.table_name
|
||||
assert_equal "smarts", Smarts.table_name
|
||||
assert_equal "credit_card", CreditCard.table_name
|
||||
assert_equal "master_credit_card", MasterCreditCard.table_name
|
||||
ActiveRecord::Base.pluralize_table_names = true
|
||||
[Category, Smarts, CreditCard, MasterCreditCard].each{|c| c.reset_table_name}
|
||||
|
||||
ActiveRecord::Base.table_name_prefix = "test_"
|
||||
Category.reset_table_name
|
||||
assert_equal "test_categories", Category.table_name
|
||||
ActiveRecord::Base.table_name_suffix = "_test"
|
||||
Category.reset_table_name
|
||||
assert_equal "test_categories_test", Category.table_name
|
||||
ActiveRecord::Base.table_name_prefix = ""
|
||||
Category.reset_table_name
|
||||
assert_equal "categories_test", Category.table_name
|
||||
ActiveRecord::Base.table_name_suffix = ""
|
||||
Category.reset_table_name
|
||||
assert_equal "categories", Category.table_name
|
||||
|
||||
ActiveRecord::Base.pluralize_table_names = false
|
||||
ActiveRecord::Base.table_name_prefix = "test_"
|
||||
Category.reset_table_name
|
||||
assert_equal "test_category", Category.table_name
|
||||
ActiveRecord::Base.table_name_suffix = "_test"
|
||||
Category.reset_table_name
|
||||
assert_equal "test_category_test", Category.table_name
|
||||
ActiveRecord::Base.table_name_prefix = ""
|
||||
Category.reset_table_name
|
||||
assert_equal "category_test", Category.table_name
|
||||
ActiveRecord::Base.table_name_suffix = ""
|
||||
Category.reset_table_name
|
||||
assert_equal "category", Category.table_name
|
||||
ActiveRecord::Base.pluralize_table_names = true
|
||||
[Category, Smarts, CreditCard, MasterCreditCard].each{|c| c.reset_table_name}
|
||||
end
|
||||
|
||||
def test_destroy_all
|
||||
|
@ -299,9 +299,11 @@ def test_migrator_going_down_due_to_version_target
|
||||
def test_schema_info_table_name
|
||||
ActiveRecord::Base.table_name_prefix = "prefix_"
|
||||
ActiveRecord::Base.table_name_suffix = "_suffix"
|
||||
Reminder.reset_table_name
|
||||
assert_equal "prefix_schema_info_suffix", ActiveRecord::Migrator.schema_info_table_name
|
||||
ActiveRecord::Base.table_name_prefix = ""
|
||||
ActiveRecord::Base.table_name_suffix = ""
|
||||
Reminder.reset_table_name
|
||||
assert_equal "schema_info", ActiveRecord::Migrator.schema_info_table_name
|
||||
end
|
||||
|
||||
@ -309,6 +311,7 @@ def test_proper_table_name
|
||||
assert_equal "table", ActiveRecord::Migrator.proper_table_name('table')
|
||||
assert_equal "table", ActiveRecord::Migrator.proper_table_name(:table)
|
||||
assert_equal "reminders", ActiveRecord::Migrator.proper_table_name(Reminder)
|
||||
Reminder.reset_table_name
|
||||
assert_equal Reminder.table_name, ActiveRecord::Migrator.proper_table_name(Reminder)
|
||||
|
||||
# Use the model's own prefix/suffix if a model is given
|
||||
@ -316,17 +319,21 @@ def test_proper_table_name
|
||||
ActiveRecord::Base.table_name_suffix = "_ARsuffix"
|
||||
Reminder.table_name_prefix = 'prefix_'
|
||||
Reminder.table_name_suffix = '_suffix'
|
||||
Reminder.reset_table_name
|
||||
assert_equal "prefix_reminders_suffix", ActiveRecord::Migrator.proper_table_name(Reminder)
|
||||
Reminder.table_name_prefix = ''
|
||||
Reminder.table_name_suffix = ''
|
||||
Reminder.reset_table_name
|
||||
|
||||
# Use AR::Base's prefix/suffix if string or symbol is given
|
||||
ActiveRecord::Base.table_name_prefix = "prefix_"
|
||||
ActiveRecord::Base.table_name_suffix = "_suffix"
|
||||
Reminder.reset_table_name
|
||||
assert_equal "prefix_table_suffix", ActiveRecord::Migrator.proper_table_name('table')
|
||||
assert_equal "prefix_table_suffix", ActiveRecord::Migrator.proper_table_name(:table)
|
||||
ActiveRecord::Base.table_name_prefix = ""
|
||||
ActiveRecord::Base.table_name_suffix = ""
|
||||
Reminder.reset_table_name
|
||||
end
|
||||
|
||||
def test_add_drop_table_with_prefix_and_suffix
|
||||
@ -334,6 +341,7 @@ def test_add_drop_table_with_prefix_and_suffix
|
||||
|
||||
ActiveRecord::Base.table_name_prefix = 'prefix_'
|
||||
ActiveRecord::Base.table_name_suffix = '_suffix'
|
||||
Reminder.reset_table_name
|
||||
WeNeedReminders.up
|
||||
|
||||
assert Reminder.create("content" => "hello world", "remind_at" => Time.now)
|
||||
@ -343,6 +351,7 @@ def test_add_drop_table_with_prefix_and_suffix
|
||||
assert_raises(ActiveRecord::StatementInvalid) { Reminder.find(:first) }
|
||||
ActiveRecord::Base.table_name_prefix = ''
|
||||
ActiveRecord::Base.table_name_suffix = ''
|
||||
Reminder.reset_table_name
|
||||
end
|
||||
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user