aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/lib/active_record/model_schema.rb6
-rw-r--r--activerecord/test/cases/base_test.rb11
2 files changed, 15 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/model_schema.rb b/activerecord/lib/active_record/model_schema.rb
index 8710884bfd..73c9e22aa3 100644
--- a/activerecord/lib/active_record/model_schema.rb
+++ b/activerecord/lib/active_record/model_schema.rb
@@ -123,7 +123,7 @@ module ActiveRecord
@table_name = value
@quoted_table_name = nil
@arel_table = nil
- @sequence_name = nil
+ @sequence_name = nil unless defined?(@explicitly_sequence_name) && @explicitly_sequence_name
@relation = Relation.new(self, arel_table)
end
@@ -170,7 +170,8 @@ module ActiveRecord
end
def reset_sequence_name #:nodoc:
- self.sequence_name = connection.default_sequence_name(table_name, primary_key)
+ @sequence_name = connection.default_sequence_name(table_name, primary_key)
+ @explicitly_sequence_name = false
end
# Sets the name of the sequence to use when generating ids to the given
@@ -189,6 +190,7 @@ module ActiveRecord
# end
def sequence_name=(value)
@sequence_name = value.to_s
+ @explicitly_sequence_name = true
end
# Indicates whether the table associated with this class exists
diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb
index d810704418..444ea474b1 100644
--- a/activerecord/test/cases/base_test.rb
+++ b/activerecord/test/cases/base_test.rb
@@ -1492,6 +1492,17 @@ class BasicsTest < ActiveRecord::TestCase
assert_not_equal before_seq, after_seq unless before_seq.blank? && after_seq.blank?
end
+ def test_dont_clear_sequence_name_when_setting_explicitly
+ Joke.sequence_name = "black_jokes_seq"
+ Joke.table_name = "cold_jokes"
+ before_seq = Joke.sequence_name
+
+ Joke.table_name = "funny_jokes"
+ after_seq = Joke.sequence_name
+
+ assert_equal before_seq, after_seq unless before_seq.blank? && after_seq.blank?
+ end
+
def test_set_table_name_symbol_converted_to_string
Joke.table_name = :cold_jokes
assert_equal 'cold_jokes', Joke.table_name