いくつかのメソッドと属性を別のモデルに委任するモデルがあります。
class ModelOne < ActiveRecord::Base
# this model has some_property column in database
end
と
class ModelTwo < ActiveRecord::Base
belongs_to :model_one
delegate :some_property, :to => :model_one
end
問題は、メソッドを呼び出すことで「some_property」にアクセスできますが、read_attribute を介してアクセスできないことです。
> obj1 = ModelTwo.last
> obj1.some_property
=> "some value"
> obj1.read_attribute :some_property
=> nil
> obj1.inspect
=> "#ModelTwo ... , ... , some_property: nil "
この属性を設定することが可能です:
> obj1.some_property = "some value"
> obj1.inspect
=> "#ModelTwo ... , ... , some_property: "some value" "
そのため、委任された属性にアクセスすることはできますが、read_attribute または inspect を使用することはできません。read_attribute で属性値を取得する機会はありますか?