zoukankan      html  css  js  c++  java
  • Ruby on rails开发从头来(五十二) ActiveRecord基础(删除记录)

        Active Record提供了两种方式进行删除操作。首先,有两个类级别的方法,deletedelete_all,这两个操作处在数据库层面上,delete()方法接收一个或一组和数据库对应的iddelete_all()方法删除所有符合指定条件的记录,如果没有指定条件,就会删除所有的记录。方法的返回值和具体的数据库适配器相关,例如oracle返回被影响的行数。如果没有记录被删除,也不会抛出异常。

    Order.delete(123)

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

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

    另外,destory方法删除和数据库中行相对应的Model对象,这样会冻结这些对象,并且不能修改对象的值。

    order = Order.find_by_name("Dave")

    order.destroy

    有两个类级别的destory方法,destory()方法接收一个或一组iddestory_all()方法接收删除条件。这两个方法都从数据库中读出对应的记录到Model对象,并且对这个对象调用实例级别的destory()方法,而且不返回有意义的信息。

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

    为什么我们同时需要deletedestory方法呢?delete方法绕过了一些Active Record的回调(callback)和验证函数,而使用destory则不会,通常我们使用destory方法来确保我们的数据库是一致的,并且不会破坏Model中所包含的业务逻辑。
  • 相关阅读:
    JDK动态代理源码解析
    Drools规则引擎-判断集合(List)是否包含集合
    Drools规则引擎-memberOf操作
    我对于今目标的反思
    UltraEdit的配置
    演讲的注意事项
    原型的安装及使用
    java异常的一些小知识
    网络攻击技术开篇——SQL Injection
    机房重构之接口
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/ruby_rails_study_52.html
Copyright © 2011-2022 走看看