• rails删除数据


    简单讲,一句话,delete不会触发回调
    效率比较高


    Deletes the row with a primary key matching the id argument, using a SQL DELETE statement, and returns the number of rows deleted. Active Record objects are not instantiated, so the object‘s callbacks are not executed, including any :dependent association options or Observer methods.

    You can delete multiple rows at once by passing an Array of ids.

    Note: Although it is often much faster than the alternative, destroy, skipping callbacks might bypass business logic in your application that ensures referential integrity or performs other essential jobs.

    Ruby代码  收藏代码
    1. # Delete a single row  
    2. Todo.delete(1)  
    3.   
    4. # Delete multiple rows  
    5. Todo.delete([2,3,4])  


    Deletes the records matching conditions without instantiating the records first, and hence not calling the destroy method nor invoking callbacks. This is a single SQL DELETE statement that goes straight to the database, much more efficient than destroy_all. Be careful with relations though, in particular :dependent rules defined on associations are not honored.
    Ruby代码  收藏代码
    1. Post.delete_all("person_id = 5 AND (category = 'Something' OR category = 'Else')")  
    2. Post.delete_all(["person_id = ? AND (category = ? OR category = ?)", 5, 'Something''Else'])  


    Destroy an object (or multiple objects) that has the given id, the object is instantiated first, therefore all callbacks and filters are fired off before the object is deleted. This method is less efficient than ActiveRecord#delete but allows cleanup methods and other actions to be run.

    This essentially finds the object (or multiple objects) with the given id, creates a new object from the attributes, and then calls destroy on it.
    Ruby代码  收藏代码
    1. # Destroy a single object  
    2. Todo.destroy(1)  
    3.   
    4. # Destroy multiple objects  
    5. todos = [1,2,3]  
    6. Todo.destroy(todos)  


    Destroys the records matching conditions by instantiating each record and calling its destroy method. Each object‘s callbacks are executed (including :dependent association options and before_destroy/after_destroy Observer methods). Returns the collection of objects that were destroyed; each will be frozen, to reflect that no changes should be made (since they can‘t be persisted).

    Note: Instantiation, callback execution, and deletion of each record can be time consuming when you‘re removing many records at once. It generates at least one SQL DELETE query per record (or possibly more, to enforce your callbacks). If you want to delete many rows quickly, without concern for their associations or callbacks, use delete_all instead.
    Ruby代码  收藏代码
    1. Person.destroy_all("last_login < '2004-04-04'")  
    2. Person.destroy_all(:status => "inactive")  


  • 相关阅读:
    删除顺序表L中下标为p(0<=p<=length-1)的元素,成功返回1,不成功返回0,并将删除元素的值赋给e
    设顺序表中的数据元素递增有序,试着写一算法,将x插入到顺序表上的适当位置上,以保持该表的有序性。
    数据结构-顺序表基本操作的实现(含全部代码)【转】
    【转】结构体指针
    结构体(第十四章 )
    线性表
    第二章 c语言概述
    时间复杂度
    软件质量与测试 黑盒测试
    软件质量保证与测试 基本内容
  • 原文地址:https://www.cnblogs.com/lexus/p/1984806.html
Copyright © 2020-2023  润新知