レールでは、属性メソッドをオーバーライドしたい場合、たとえば. インスタンスメソッドを定義する必要があるかもしれません。
ただし、インスタンスが最初に同期されるまで、activerecord は属性メソッドを定義しません。
これは次の場所で確認できます。
class MyModel < ActiveRecord::Base
end
MyModel.attribute_methods_generated? # => false
MyModel.instance_method(:a_db_column)
# => NameError Exception: undefined method `a_db_column' for class `MyModel'
MyModel.new # implicitly calls define_attribute_methods
# MyModel.define_attribute_methods # can also use this instead of MyModel.new
MyModel.attribute_methods_generated? # => true
MyModel.instance_method(:a_db_column)
#<UnboundMethod: MyModel(#<Module:0x000000030a20a0>)#__temp__>
define_attribute_methods
早期に電話をかけることで発生する可能性のある問題はありますか? 次のようなことをしても:
class MyModel < ActiveRecord::Base
define_attribute_methods
# is there any code here which might cause problems?
end