提交 03b62b84 编写于 作者: R Rafael França

Merge pull request #24653 from kbrock/kinder_locking_column

schema_load triggers 2nd schema_load (via locking)
......@@ -150,7 +150,7 @@ def locking_column=(value)
# The version column used for optimistic locking. Defaults to +lock_version+.
def locking_column
reset_locking_column unless defined?(@locking_column)
@locking_column = DEFAULT_LOCKING_COLUMN unless defined?(@locking_column)
@locking_column
end
......
require 'thread'
require "cases/helper"
module SchemaLoadCounter
extend ActiveSupport::Concern
module ClassMethods
attr_accessor :load_schema_calls
def load_schema!
self.load_schema_calls ||= 0
self.load_schema_calls +=1
super
end
end
end
class SchemaLoadingTest < ActiveRecord::TestCase
def test_basic_model_is_loaded_once
klass = define_model
klass.new
assert_equal 1, klass.load_schema_calls
end
def test_model_with_custom_lock_is_loaded_once
klass = define_model do |c|
c.table_name = :lock_without_defaults_cust
c.locking_column = :custom_lock_version
end
klass.new
assert_equal 1, klass.load_schema_calls
end
def test_model_with_changed_custom_lock_is_loaded_twice
klass = define_model do |c|
c.table_name = :lock_without_defaults_cust
end
klass.new
klass.locking_column = :custom_lock_version
klass.new
assert_equal 2, klass.load_schema_calls
end
private
def define_model
Class.new(ActiveRecord::Base) do
include SchemaLoadCounter
self.table_name = :lock_without_defaults
yield self if block_given?
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册