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. 作者:wallimn

    经过这几天对DHTMLXTree的折腾总算是有点眉目了.领导催得紧.组长紧的催. 唉,把握这次机会来好好总结一下DHTMLXTree. 还是老套路.首先来简单了解一下DHTMLXTree. DHTML ...

  2. iOS: 学习笔记, 加入一个带界面约束的控制器

    1. 创建一个空iOS应用程序(Empty Application). 2. 加入加控制器类. 改动控制器类的viewDidLoad - (void)viewDidLoad { [super view ...

  3. PLSQL Developer设置及快捷键设置

    1.登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需 ...

  4. 把质量控制工作往前推进(1)——安装sonarqube

    曾经关注点一直在怎么提高应用程序的质量,没太在意代码级别的质量.近期由于某些因素的推动,须要关注到代码级别的质量去,把质量工作尽量往前推,也符合质量控制的原则.  试用了一下sonarqube(老版本 ...

  5. IIS5.1、IIS6.0、IIS7.5中安装配置MVC 3

    本文主要介绍在IIS5.1.IIS6.0.IIS7.5中安装配置MVC 3的具体办法! 正文: IIS5.1 1. 安装Microsoft .net FrameWork 4.0安装包; 2. 安装AS ...

  6. mysql用merge合并表

    merge合并表的要求 1.合并的表使用的必须是MyISAM引擎 2.表的结构必须一致,包括索引.字段类型.引擎和字符集 实例: create table if not exists user1( i ...

  7. JSON Web Token (JWT) 实现与使用方法

    1. JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的.自包含的方式,用于作为JSON对象在各方之间安全地传输信息.该 ...

  8. 工作总结 @Html.EditorFor @Html.TextBoxFor 表达式树 绑定显示日期格式数据

    页面显示 不出来 没有 这个input ............. 换成 @Html.TextBoxFor input 出来了 这是 为什么呢 ? 用@Html.TextBox 也可以出来 为什么 @ ...

  9. Unity动态字体在手机上出现字体丢失问题解决

    在我们游戏的开发过程中,在部分手机上运行游戏的时候,出现了字体丢失的问题,出问题的手机似乎用的都是高通芯片. 使用的unity是4.2.0版本,ngui是3.4.9版本. 在unity的论坛及unit ...

  10. inside when() you don't call method on mock but on some other object

    错误原因:调用静态方法,要事先引入静态类,否则mock的时候会默认为测试的类 解决方法:@PrepareForTest({SecurityContextHolder.class})引入静态类 注:@P ...