在之前的《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专题】的文章
[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