我正在阅读Rails代码库,并且注意到https://github.com/rails/rails/blob/b2eb1d1c55a59fee1e6c4cba7030d8ceb524267c/activemodel/test/cases/serialization_test.rb#L92
中的这段代码 def test_should_use_read_attribute_for_serialization
def @user.read_attribute_for_serialization(n)
"Jon"
end
expected = { "name" => "Jon" }
assert_equal expected, @user.serializable_hash(only: :name)
end
基于测试和正在发生的事情,似乎在运行时重新定义了实例read_attribute_for_serialization
上的方法@user
。这个叫什么?这是如何运作的?我在哪里可以阅读有关此行为的更多信息,并且该语言允许这样做?