未验证 提交 d9e4bffb 编写于 作者: M Matthew Draper 提交者: GitHub

Merge pull request #31475 from shioyama/reset_column_information_redefine_child_attribute_methods

Undefine attribute methods of descendants when resetting column information
* Undefine attribute methods on descendants when resetting column
information.
*Chris Salzberg*
* Log database query callers
Add `verbose_query_logs` configuration option to display the caller
......
......@@ -425,7 +425,7 @@ def content_columns
# end
def reset_column_information
connection.clear_cache!
undefine_attribute_methods
([self] + descendants).each(&:undefine_attribute_methods)
connection.schema_cache.clear_data_source_cache!(table_name)
reload_schema_from_cache
......
......@@ -1106,13 +1106,18 @@ def test_save_touch_false
end
def test_reset_column_information_resets_children
child = Class.new(Topic)
child.new # force schema to load
child_class = Class.new(Topic)
child_class.new # force schema to load
ActiveRecord::Base.connection.add_column(:topics, :foo, :string)
Topic.reset_column_information
assert_equal "bar", child.new(foo: :bar).foo
# this should redefine attribute methods
child_class.new
assert child_class.instance_methods.include?(:foo)
assert child_class.instance_methods.include?(:foo_changed?)
assert_equal "bar", child_class.new(foo: :bar).foo
ensure
ActiveRecord::Base.connection.remove_column(:topics, :foo)
Topic.reset_column_information
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册