美文网首页
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