美文网首页
rails destory和delete的区别

rails destory和delete的区别

作者: 程序萌 | 来源:发表于2018-05-09 10:27 被阅读0次

delete()方法接收一个或一组和数据库对应的id,但不会删除管理表的记录

User.delete([2,3,4,5])
Order.delete(123)

delete_all()方法删除所有符合指定条件的记录,如果没有指定条件,就会删除所有的记录,会返回删除数,但不会删除管理表的记录

Product.delete_all(["price > ?", @expensive_price])

destory()方法接收一个或一组id,会删除管理表记录

User.destory([2,3,4,5])
Order.destory(123)

destory_all()方法接收删除条件,并且对这个对象调用实例级别的destory()方法,而且不返回有意义的信息,会删除管理表记录

Order.destroy_all(["shipped_at < ?", 30.days.ago])

为什么我们同时需要delete和destory方法呢?delete方法绕过了一些Active Record的回调(callback)和验证函数,而使用destory则不会,通常我们使用destory方法来确保我们的数据库是一致的,并且不会破坏Model中所包含的业务逻辑。

相关文章

网友评论

      本文标题:rails destory和delete的区别

      本文链接:https://www.haomeiwen.com/subject/fucnrftx.html