2
私は次のモデルを定義した場合...:saveフックは、DataMapperの:updateフックにどのように関係していますか?
class Foo
include DataMapper::Resource
property :name, String, :key => true
before :save, do
puts 'save'
end
before :update, do
puts 'update'
end
end
なぜ第二は、「更新」フックをトリガーにも保存していますか?
ruby :001 > f = Foo.new
=> #<Foo @name=nil>
ruby :002 > f.name = 'Bob'
=> "Bob"
ruby :003 > f.save
save
=> true
ruby :004 > f.name = 'Joe'
=> "Joe"
ruby :005 > f.save
save
update
=> true
もちろん、私はソースに潜入して、どのコードがこの動作を駆動するのかという疑問に答えることができます。もっと重要なのは、これらのフックのそれぞれを実際に使用する正しい方法を理解したいと思います。
返し
私はこのコードを使用して、一般的な前後のフックの素敵な図を生成しました:https://www.lucidchart.com/documents/view#4307-531c-4f1f159f-ace0-1ca90a7a4df5?branch=9cd86b38 -93fa-4432-ac0d-b351706819de – mltsy
@mltsyフックが呼び出される前に、保存しているオブジェクトが汚れている必要があることを忘れないでください!それ以外の場合、フックはまったく動作しません。 – Frank