Difference between Destroy and Delete

前端 未结 6 988
慢半拍i
慢半拍i 2020-11-27 11:00

What is the difference between

@model.destroy and @model.delete

For example:

Model.find_by(col: \"foo\").destroy_         


        
6条回答
  •  执念已碎
    2020-11-27 11:30

    Basically destroy runs any callbacks on the model while delete doesn't.

    From the Rails API:

    • ActiveRecord::Persistence.delete

      Deletes the record in the database and freezes this instance to reflect that no changes should be made (since they can't be persisted). Returns the frozen instance.

      The row is simply removed with an SQL DELETE statement on the record's primary key, and no callbacks are executed.

      To enforce the object's before_destroy and after_destroy callbacks or any :dependent association options, use #destroy.

    • ActiveRecord::Persistence.destroy

      Deletes the record in the database and freezes this instance to reflect that no changes should be made (since they can't be persisted).

      There's a series of callbacks associated with destroy. If the before_destroy callback return false the action is cancelled and destroy returns false. See ActiveRecord::Callbacks for further details.

提交回复
热议问题