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オブジェクトをインスタンス化することは可能ですか?