分享好友 编程语言首页 频道列表

Ruby on Rails,使用destroy方法删除ActiveRecord对象

ruby专题  2023-02-08 22:480

在之前的《Ruby on Rails,使用new和create创建ActiveRecord对象及他们之间的区别》中学习到,通过new和create命令创建及持久化ActiveRecord对象;《Ruby on Rails,使用save和update_attributes更新持久化的ActiveRecord对象》中,我们知道通过save和update命令更新一个已经持久化过的ActiveRecord对象。

在这里,我们看看如何将已经持久化过的对象从数据库中删除。

启动rails console,先创建一个持久化对象,它的id属性是“1”。

irb(main):033:0* subject.name="abbuggy"
=> "abbuggy"
irb(main):034:0> subject.save
=> true
irb(main):035:0> subject.id
=> 1

下面准备将其删除,先从数据库中用find方法找到这个对象并赋值给一个变量。然后调用destory方法,将这个对象所包含的信息从数据库中删除。

irb(main):045:0> subject_to_delete=Subject.find(1)
irb(main):061:0> subject_to_destory.destroy
  [1m[36m (0.0ms)[0m  [1mBEGIN[0m
  [1m[35mSQL (1.0ms)[0m  DELETE FROM `subjects` WHERE `subjects`.`id` = 1
  [1m[36m (26.0ms)[0m  [1mCOMMIT[0m
=> #<Subject id: 1, created_at: "2012-10-19 15:05:27", updated_at: "2012-10-19 15:05:27", name: nil, position: nil>

在这个对象被destory之后,即使在数据库中没有了,我们依然能够通过变量名访问它。但是通过调用frozen?方法查看,得知在这个时候,对象的属性是无法修改的。即,destory方法调用之后会将对象置为冻结状态。

irb(main):064:0> subject_to_delete.frozen?
=> true

我们删除这个对象的时候为什么没有使用更常见的delete而是用了destory方法呢?其实delete方法也能将对象从数据库中删除,只是delete绕过了一些Active Record的回调(callback)和验证函数;而使用destory则不会,通常我们使用destory方法来确保我们的数据库是一致的,并且不会破坏Model中所包含的业务逻辑。

查看更多关于【ruby专题】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
[ruby on rails] 跟我学之(6)显示指定数据
根据《[ruby on rails] 跟我学之路由映射》,我们知道,可以访问 GET    /posts/:id(.:format) 来显示具体的对象。 修改 app/controllers/posts_controller.rb的show这个action。这里有个难题,如果获取url里面的参数?可以通过params内置变量进行访问

0评论2023-03-16300

[ruby on rails] 跟我学之(10)数据输入验证
这里简单加上几个验证,非空,最小长度,唯一修改app/models/post.rb文件,如下:class PostActiveRecord::Base#attr_accessible :title, :contentvalidates :title, :context, :presence = truevalidates :title, :length = { :minimum =2}validates :title,

0评论2023-03-16870

[脚本_Ruby]Windows安装配置Ruby On Rails
感觉Java学的差不多了,想接触下Ruby On Rails,看看它比Java WEB高效到哪里了,在Ubuntu12.10上弄了两天总是报错提示没有指向的文件sqlite3,不管怎么安装sqlite3都不行,到最后没办法只有跑到WIN7平台下试试,以下就是我搭建Ruby On Rails的过程:    

0评论2023-02-10507

Prawn:Ruby生成PDF更简捷的选择
在InfoQ上看到《Prawn:使用Ruby生成PDF更简捷》,其说到的Prawn可以更加快捷的在Ruby中生成PDF文件。因为之前使用过很多版本的PDF生成类库都不尽如人意,有的太复杂,有的太慢,于是对这个做了测试。1、安装安装很简单,直接使用gem install prawn即可安装完

0评论2023-02-10471

Ruby On Rails:InstanRails
参考数据:对于Ruby On Rails 不是粉清楚的朋友可以参考以下的连结信息,该连结网站都提供不错的Ruby On Rails 信息。Ruby: 一个纯OO的脚本语言..Ruby on Rails: 快速建置Web的MVC架构的Framework说明:整合环境: Instant Rails 是在Windows环境中,整合了Ruby,

0评论2023-02-10701

进入Ruby on Rails世界
一、ruby和rails简介  ruby是一种面向对象的动态脚本语言。它的语法很灵活,而且提供了丰富的类库。因此,用ruby编写程序的效率是非常高的。  虽然ruby很早就出现了(1993年诞生于日本),但由于ruby一直缺乏英语文档,而且当时的ruby在web开发上并不怎么

0评论2023-02-10479

ruby : nil?, empty? and blank?的选择
article = nilarticle.nil?# = trueempty? checks if an element - like a string or an array f.e. - is empty:# Array[].empty? #= true# String"".empty? #= trueRails adds the method blank? to the Object class:An object is blank if it‘s false, em

0评论2023-02-09424

Ruby环境的安装(In Ubuntu 7.10)
今天开始学习Ruby。准备的图书呢,就是《Programming Ruby - 2nd》。为了准备一个实验的环境,于是要给我的Ubuntu上安装Ruby的环境。    1、安装解释器:sudo apt-get install ruby    2、安装一个即时执行工具irb:      由于第一部安装的结果只

0评论2023-02-09335

ruby使用IO类读写文件 ruby读取文件内容
path="test.txt"port=open(path)beginport.each_line{|line|p line.to_s}ensureport.closeendSTDOUT"i love you \n"port=open('test.txt')s=port.statp s.ftypep s.devp s.inop s.modep s.nlinkbegina=port.readlinesa=port.each{|e| p e}ensu

0评论2023-02-09410

Ruby1.9.2 开发环境安装备忘
在Windows下安装Ruby环境http://rubyinstaller.org/ 下载安装包和Devkit开发工具包Ruby的安装就不用说了。双击 Next.记得 Add to PATH Devkit 安装 把下载的压缩文件解压缩到如devkit文件夹中,例如:Ruby安装位置:D:\Ruby\Devkit安装位置:D:\Ruby\devkit 

0评论2023-02-09870

Python vs Ruby: 谁是最好的 web 开发语言?
Python 和 Ruby 都是目前用来开发 websites、web-based apps 和 web services 的流行编程语言之一。 这两种语言在许多方面有相似之处。它们都是高级的面向对象的编程语言,都是交互式脚本语言、都提供标准库且支持持久化。但是,Python 和 Ruby 的解决方法却

0评论2023-02-09819

Ruby require_gem
   gem 是ruby 的包管理系统,类似于ubuntu 的 apt-get.命令安装包:gem install your-package移除包:  gem uninstall your-package查询:     gem query –ln your-wanted (本地)             gem query –rn your-wanted (网上资源) 程序

0评论2023-02-09778

ruby 赋值语句解析
a = [1,2,3,4]-----------------------------------------------b,c = a      = b=1,c=2当右边只有一个数组,ruby自动将右边的数组拆分,然后赋值给左边的变量-----------------------------------------------b,*c = a    =b=1 ,c=[2,3,4]当左边变量

0评论2023-02-09341

Ruby on rails开发从头来(五十四)- ActiveRecord基础(指定关联关系)
Rails支持三种表间关联关系,一对一,一对多,多对多,你需要在Model中加入声明来标识这些关联:has_one,has_many,belongs_to,has_and_belongs_to_many。一对一关联关系可能存在于象订单和发票这样的关系,一个订单只能有一个发票,在Rails中,我们这样指

0评论2023-02-09873

更多推荐