我读过 ruby 对象只是我们可以存储实例变量(和类指针)的地方。所以:
class Person
def initialize(age)
@age = age
end
end
现在如果我们运行:
p = Person.new(101)
然后我们得到:
#<Person:0x86cf5b8 @age=101>
太好了,正如预期的那样,属性age存储为实例变量。但是,如果我们将模型转换为从 ActiveRecord 继承,情况会有所不同。现在,在实例化一个新的 Person 之后,我们会看到:
# timestamps removed
#<Person id: 1, age: 101 >
age属性似乎不再是实例变量。那么这里到底发生了什么?
我知道我们可以访问@attributes
包含所有属性和值的散列的实例变量,所以我想知道 ActiveRecord 是否可能会修改控制台输出以以这种方式呈现对象属性。
是否可以在不使用 ActiveRecord 的情况下实例化一个 Ruby 对象,其中属性作为属性而不是实例变量保存?