rails dependent
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。 deletedestroy
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的更多相关文章
- 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 ...
- rails将类常量重构到数据库对应的表之后记
怎么还有啊!别急,有强迫症的人伤不起!有点小事没说完感觉痒痒的:就是如果表payment_types经常变动该怎么办?每次都要关闭rails网页服务器,然后重启吗?那也太麻烦鸟,最终的解决方案是,在O ...
- SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.
SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ...
- Ruby on Rails 开发笔记
安装 Ruby on Rails Install Rails: A step-by-step guide 创建应用 # 创建新的应用程序 $ rails new blog $ cd blog # 启动 ...
- 开发新手最容易犯的50个 Ruby on Rails 错误(1)
[编者按]本文最早发布与 JETRuby 博客,主要介绍了开发新手最容易犯的 Ruby 错误.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 一年前,我们创立了以 "Rubyboo ...
- 12月3日周日,关联:has_many(dependent::delete_all和destroy的区别) 注意看log; where等查询语句的用法。 layout传递参数❌
错误❌: 1.belongs_to :job, dependent: :destroy //尝试删除一条resumen后,job没有同步删除?? 答:建立一对多的关系,如job和resume.应该在j ...
- ActiveStorage Overview --Rails guide (history:7-1更新)
如何attach一个或多个文件到一个记录.has_many_attach()方法. 如何删除一个附加的文件. purge方法 如何连接到一个附加的文件.url_for() 如何使用variants来转 ...
- 《Ruby on Rails教程》学习笔记
本文是我在阅读 Ruby on Rails 教程的简体中文版时所做的摘录,以及学习时寻找的补充知识.补充知识主要来自于 Ruby on Rails 實戰聖經. Asset Pipeline 在最新版 ...
- Rails sanitize
The SanitizeHelper module provides a set of methods for scrubbing text of undesired HTML elements. T ...
随机推荐
- 深入理解dp px density
1 http://blog.csdn.net/lcaihy1314/article/details/8446401 2 待续
- 转: Genymotion使用及离线镜像的安装
Genymotion是一套完整的工具,它提供了Android虚拟环境.由于它比Android自带的模拟器要流畅好多,所以它简直就是开发者.测试人员.推销者甚至是游戏玩家的福音.支持Windows.Li ...
- SpringCloud系列二:硬编码实现简单的服务提供者与服务消费者
从本文开始,以一个电影售票系统为例讲解Spring Cloud 1. 版本 jdk:1.8 SpringBoot:2.0.0.RELEASE SpringCloud:Finchley.M8 2. 系统 ...
- hiho1080 更为复杂的买卖房屋姿势
题目链接: hihocoder1080 题解思路: 题目中对区间改动有两个操作: 0 区间全部点添加v 1 区间全部点改为v easy想到应该使用到两个懒惰标记 一个记录替换 一个记录增减 ...
- webpack 使用配置
注意:webpack 2.0版本之后有所区别 一.插件篇 1. 自动补全css3前缀 autoprefixer 官方是这样说的:Parse CSS and add vendor prefixes to ...
- 在Vue中使用layer.js弹出层插件
layer.js(mobile)是一个小巧方便的弹出层插件,在之前的apicloud项目中被大量使用,但最近对apicloud的IDE.非常不友好的文档和极低的开发效率深感厌烦,决定弃用然后转向Vue ...
- java 实现HttpRequest 发送http请求
package com.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...
- Android遇到的那些坑
1.输出log Log.i("GOOD",v.getId()+"");
- Junit内部解密之三: 单元测试用例运行的全过程
转自:http://blog.sina.com.cn/s/blog_6cf812be0100x8sb.html 我们以一个非常简单的TestCalculator类为例,只有一个测试方法: Public ...
- org.mockito.exceptions.misusing.MissingMethodInvocationException: when() requires an argument which has to be 'a method call on a mock'
异常原因: 1.mockito的jar包中缺少方法 2.mock方法的时候,返回的是对象,而对象没有重写equals方法 3.mock的实例方法调用方法错误 解决方法: 1.用powermock中的a ...
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"