dependent
可以設定當物件刪除時,也會順便刪除它的 has_many 物件:
class Event < ActiveRecord::Base
has_many :attendees, :dependent => :destroy
end
:dependent 可以有三種不同的刪除方式,分別是:
 :destroy 會執行 attendee 的 destroy 回呼
 :delete 不會執行 attendee 的 destroy 回呼
 :nullify 這是預設值,不會幫忙刪除 attendee
要不要執行 attendee 的刪除回呼效率相差不少,如果需要的話,必須一筆筆把 attendee
讀取出來變成 attendee 物件,然後呼叫它的 destroy。如果用:delete 的話,只需要一
個 SQL 語句就可以刪除全部 attendee。

delete

destroy


destroy是先查出来再删除

2.2.4 :017 > Credit.first.destroy
  Credit Load (0.5ms)  SELECT  "credits".* FROM "credits"  ORDER BY "credits"."id" ASC LIMIT 1
   (0.3ms)  begin transaction
  SQL (0.5ms)  DELETE FROM "credits" WHERE "credits"."id" = ?  [["id", 2]]
   (63.3ms)  commit transa

2.2.4 :006 > Credit.destroy_all
  Credit Load (0.6ms)  SELECT "credits".* FROM "credits"
   (0.1ms)  begin transaction
  SQL (0.4ms)  DELETE FROM "credits" WHERE "credits"."id" = ?  [["id", 7]]
   (59.9ms)  commit transaction
   (0.2ms)  begin transaction
  SQL (0.2ms)  DELETE FROM "credits" WHERE "credits"."id" = ?  [["id", 8]]
   (53.4ms)  commit transaction
   (0.2ms)  begin transaction
  SQL (0.3ms)  DELETE FROM "credits" WHERE "credits"."id" = ?  [["id", 9]]
   (53.7ms)  commit transaction

2.2.4 :023 > Credit.first.delete
  Credit Load (0.5ms)  SELECT  "credits".* FROM "credits"  ORDER BY "credits"."id" ASC LIMIT 1
  SQL (54.7ms)  DELETE FROM "credits" WHERE "credits"."id" = ?  [["id", 3]]

2.2.4 :005 > Post.delete_all
  SQL (73.7ms)  DELETE FROM "posts"

rails dependent的更多相关文章

  1. 10 steps to get Ruby on Rails running on Windows with IIS FastCGI- 摘自网络

    Since the original tech preview release of FastCGI last year, we've been seeing a lot of requests fo ...

  2. rails将类常量重构到数据库对应的表之后记

    怎么还有啊!别急,有强迫症的人伤不起!有点小事没说完感觉痒痒的:就是如果表payment_types经常变动该怎么办?每次都要关闭rails网页服务器,然后重启吗?那也太麻烦鸟,最终的解决方案是,在O ...

  3. SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.

    SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ...

  4. Ruby on Rails 开发笔记

    安装 Ruby on Rails Install Rails: A step-by-step guide 创建应用 # 创建新的应用程序 $ rails new blog $ cd blog # 启动 ...

  5. 开发新手最容易犯的50个 Ruby on Rails 错误(1)

    [编者按]本文最早发布与 JETRuby 博客,主要介绍了开发新手最容易犯的 Ruby 错误.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 一年前,我们创立了以 "Rubyboo ...

  6. 12月3日周日,关联:has_many(dependent::delete_all和destroy的区别) 注意看log; where等查询语句的用法。 layout传递参数❌

    错误❌: 1.belongs_to :job, dependent: :destroy //尝试删除一条resumen后,job没有同步删除?? 答:建立一对多的关系,如job和resume.应该在j ...

  7. ActiveStorage Overview --Rails guide (history:7-1更新)

    如何attach一个或多个文件到一个记录.has_many_attach()方法. 如何删除一个附加的文件. purge方法 如何连接到一个附加的文件.url_for() 如何使用variants来转 ...

  8. 《Ruby on Rails教程》学习笔记

    本文是我在阅读 Ruby on Rails 教程的简体中文版时所做的摘录,以及学习时寻找的补充知识.补充知识主要来自于 Ruby on Rails 實戰聖經. Asset Pipeline 在最新版 ...

  9. Rails sanitize

    The SanitizeHelper module provides a set of methods for scrubbing text of undesired HTML elements. T ...

随机推荐

  1. selenium从入门到应用 - 1,环境准备(Java+TestNG+Maven+Selenium)

    本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境的 ...

  2. group by having和connect by

    --使用group by 子句对数据进行分组:对group by 子句形成的组运行聚集函数计算每一组的值:最后用having 子句去掉不符合条件的组.--having 子句中的每一个元素也必须出现在s ...

  3. css进阶读书笔记

    说明:努力在十一左右,最迟双11之前掌握所有css知识要点 一.摘自<写给大家看的CSS书(第2版)>(虽然书比较旧,09年版的,但对于我这种刚入门的小菜鸟 来说,能学到的还是挺多的) 1 ...

  4. Servlet的API(二)

    web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象和代表响应的response对象.request和response对象既然代表请求和响应,那我们获取 ...

  5. eventfd

    #include <sys/eventfd.h> int eventfd(unsigned int initval, int flags); eventfd() creates an &q ...

  6. C#中Lock静态字段和实例字段

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. freemarker 展示数据列表并传值给后台

    select id="initiatorId" name="initiatorId">                  <#if initiato ...

  8. which 命令

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:        which  查看可执行文件的位置.       whereis 查看文件的位置.         ...

  9. centos6搭建docker镜像私服

    1.创建私服容器 docker run -d -e SETTINGS_FLAVOR=dev -e STORAGE_PATH=/tmp/registry -v /opt/data/registry:/t ...

  10. ImportError: No module named '_sqlite3'

    问题: Python 3.5.1 报错如下 Traceback (most recent call last): File "manage.py", line 16, in < ...