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. react-native AsyncStorage 数据持久化方案

    1,AsyncStorage介绍 AsyncStorage 是一个简单的.异步的.持久化的 Key-Value 存储系统,它对于 App 来说是全局性的.它用来代替 LocalStorage. 由于它 ...

  2. react 打包后,项目部署完毕,刷新页面报错(404)

    原因解析: 之所以你在浏览器内可以由首页跳转到其他路由地址,是因为这是由前端自行渲染的,你在React Router定义了对应的路由,脚本并没有刷新网页访问后台,是JS动态更改了location. 当 ...

  3. Linux Mint (应用软件— 虚拟机:Virtualbox)

    近期想自己折腾一下Linux系统本身.比方Linux裁减或者移植.裁减或者移植Linux是一件麻烦的事情.而且出错后会影响到当前的系统.怎样才干不影响当前机器上的系统呢,于是便想到了虚拟机.在当前系统 ...

  4. linux下OpenSSL的RSA密钥生成

    工具的安装: 一.源码安装 OpenSSL Version:openssl-1.0.0e.tar.gz ------------------------安装: 1.将下载的压缩包放在根目录, 2.在文 ...

  5. Spring Framework简单介绍

    Spring Framework        学习java编程不知不觉已经三年时间了,開始的时候,总是喜欢看着视频,然后按部就班的敲打着键盘,每当系统正常执行后.心里乐开了花.最開始的时候,所有的代 ...

  6. Android Studio 使用笔记:记录使用Gradle配置AndroidAnnotations

    系统:Mac Yosemit 10.10 JDK:1.6+ Android Studio:1.2 原来看到有人用AndroidAnnotations,十分羡慕.但是Gradle并不熟悉,现找到了正确的 ...

  7. php判断页面是否是微信打开的示例(微信打开网页)

    代码如下: $user_agent = $_SERVER['HTTP_USER_AGENT'];if (strpos($user_agent, 'MicroMessenger') === false) ...

  8. 【Python + selenium】之BSTestRunner:NameError: name 'unicode' is not defined

    参考文章:<python3.6 :NameError: name 'unicode' is not defined>

  9. &lt;C#入门经典&gt;学习笔记1之初识C#

    序言 选择< C#入门经典第五版>作为自学书籍,以此记录学习过程中的笔记与心得. C#简单介绍 1. C#是一种块结构的语言 2. C#区分大写和小写 C#变量 C#的变量定义与C语言相似 ...

  10. python 微信跳一跳进阶

    上一篇是通过图片识别来计算跳的距离,再计算按压时间,最后通过adb来控制手机跳的 本篇讲的是通过机器学习,来训练的算法进行跳一跳的 链接: github:https://github.com/Prin ...