• 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中所包含的业务逻辑。
  • 相关阅读:
    关于java中final变量的小问题
    你在努力工作吗?
    Google Android系统中侵犯Oracle的专利说明
    应用系统之间数据传输的几种方式
    Java内存模型jsr133规范介绍
    程序员40岁之后怎么办?
    eaby技术架构变迁
    缓存使用的一些注意事项
    java对象初始化顺序
    Ubuntu安装Fcitx(小企鹅五笔输入法)
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/ruby_rails_study_52.html
Copyright © 2020-2023  润新知