これはJavascriptでかなり自明ですが、Rubyでは正解ではありません。Rubyのクラスレベルブロックで「自己」は誰ですか?
class Product
after_initialize do |p|
p.set_approved
end
set_approved
approved = true
end
end
私はコードが
def after_initialize(&blk)
yield(self)
end
のいくつかの並べ替え、両方の方法の状況であると確信しているので、pはなりかなり確信していたので、私は
をしなければならない理由self
、あります
def set_approved(p)
p.approved = true
end
Rubyでは 'self'はメソッドが定義されているオブジェクトインスタンスまたはクラスコンテキストをほとんど常に指します。' a_i'はどこに存在しますか?それは 'after_initialize'のためのあなたの短い形式ですか?質問でそれをしないようにしてください。 – tadman
@sawa 'self'は(通常)メソッドを呼び出すときにRubyに含めることができます。この場合、承認されたのはdbカラムで、Railsによって自動的に作成されます。 – MCB
私はあなたが 'yield(self)'で持っていたものを逃しました。 – sawa