[ruby on rails] 跟我学之(3)基于rails console的查增删改操作
本章节展开对model的介绍:包括查增删改操作。紧接着上面一节《[ruby on rails] 跟我学之HelloWorld》
创建模型
使用命令创建模型
创建表post,默认自带两栏位 title :string, content:text , 在模型里面按照约定使用单数post而不是复数posts
cd blog
rails g model post title:string content:text
输出:
invoke active_record
create db/migrate/20141203105453_create_posts.rb
create app/models/post.rb
invoke test_unit
create test/models/post_test.rb
create test/fixtures/posts.yml
db/migrate/20141203105453_create_posts.rb文件内容如下:
class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :title
t.text :context t.timestamps
end
end
end
以上只是生成了迁移文件,而没有正式生成数据库。 需要运行以下指令来生成数据库。
rake db:migrate
相当于django的syncdb。 输出如下:
== 20141203105453 CreatePosts: migrating ======================================
-- create_table(:posts)
-> 0.0021s
== 20141203105453 CreatePosts: migrated (0.0029s) =============================
从控制台访问模型
进入控制台,类似于django的manage shell指令,ror使用以下指令:
rails console
简写为 rails c
新增记录:
模型类.new -> 模型实例变量.save
2.1.5 :001 > p = Post.new(:title => "My First Post", :context=>"this is my first post")
=> #<Post id: nil, title: "My First Post", context: "this is my first post", created_at: nil, updated_at: nil>
2.1.5 :002 > p.save()
(0.5ms) begin transaction
SQL (0.7ms) INSERT INTO "posts" ("context", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?) [["context", "this is my first post"], ["created_at", "2014-12-03 11:44:50.954572"], ["title", "My First Post"], ["updated_at", "2014-12-03 11:44:50.954572"]]
(23.0ms) commit transaction
=> true
模型类.create
2.1.5 :003 > Post.create(:title => "create test", :context=>"test of create")
(0.2ms) begin transaction
SQL (0.4ms) INSERT INTO "posts" ("context", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?) [["context", "test of create"], ["created_at", "2014-12-03 11:48:08.779270"], ["title", "create test"], ["updated_at", "2014-12-03 11:48:08.779270"]]
(21.9ms) commit transaction
=> #<Post id: 2, title: "create test", context: "test of create", created_at: "2014-12-03 11:48:08", updated_at: "2014-12-03 11:48:08">
查询记录
模型类.all
2.1.5 :004 > posts = Post.all
Post Load (0.6ms) SELECT "posts".* FROM "posts"
=> #<ActiveRecord::Relation [#<Post id: 1, title: "My First Post", context: "this is my first post", created_at: "2014-12-03 11:44:50", updated_at: "2014-12-03 11:44:50">, #<Post id: 2, title: "create test", context: "test of create", created_at: "2014-12-03 11:48:08", updated_at: "2014-12-03 11:48:08">]>
模型类.find(id)
2.1.5 :005 > post = Post.find(2)
Post Load (0.6ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1 [["id", 2]]
=> #<Post id: 2, title: "create test", context: "test of create", created_at: "2014-12-03 11:48:08", updated_at: "2014-12-03 11:48:08">
可以用[实例变量].[成员变量]的方式访问数据,如下:
2.1.5 :006 > post.title
=> "create test"
2.1.5 :007 > post.context
=> "test of create"
更新记录
模型实例变量.update -> 模型实例变量.save()
2.1.5 :008 > post.title = "test update"
=> "test update"
2.1.5 :009 > post.save()
(0.4ms) begin transaction
SQL (1.2ms) UPDATE "posts" SET "title" = ?, "updated_at" = ? WHERE "posts"."id" = 2 [["title", "test update"], ["updated_at", "2014-12-03 11:57:08.964494"]]
(10.0ms) commit transaction
=> true
模型实例变量.update_attribute(field,value)
2.1.5 :010 > post.update_attribute(:context,"test operation of update_attribute")
(0.4ms) begin transaction
SQL (1.4ms) UPDATE "posts" SET "context" = ?, "updated_at" = ? WHERE "posts"."id" = 2 [["context", "test operation of update_attribute"], ["updated_at", "2014-12-03 12:01:12.051869"]]
(32.3ms) commit transaction
=> true
模型实例变量.update_attributes(hash)
2.1.5 :013 > post.update_attributes(:title=>"test update_attribute 2", :context =>"content for test of update_attribute 2")
(1.4ms) begin transaction
SQL (1.2ms) UPDATE "posts" SET "context" = ?, "title" = ?, "updated_at" = ? WHERE "posts"."id" = 2 [["context", "content for test of update_attribute 2"], ["title", "test update_attribute 2"], ["updated_at", "2014-12-03 12:05:16.878764"]]
(26.1ms) commit transaction
=> true
删除记录
模型实例变量.destroy
2.1.5 :016 > post.destroy
(0.3ms) begin transaction
SQL (1.3ms) DELETE FROM "posts" WHERE "posts"."id" = ? [["id", 2]]
(23.6ms) commit transaction
=> #<Post id: 2, title: "test update_attribute 2", context: "content for test of update_attribute 2", created_at: "2014-12-03 11:48:08", updated_at: "2014-12-03 12:05:16">
转载请注明本文来自:http://www.cnblogs.com/Tommy-Yu/p/4141122.html,谢谢!
[ruby on rails] 跟我学之(3)基于rails console的查增删改操作的更多相关文章
- 一步一步学Linq to sql(三):增删改
示例数据库 字段名 字段类型 允许空 字段说明 ID uniqueidentifier 表主键字段 UserName varchar(50) 留言用户名 PostTime datetime 留言时间 ...
- [ruby on rails] 跟我学之(9)删除数据
首先需要在index页加个删除链接,并提供一个删除的确认,用户确认删除时,直接删除数据. 修改views 修改 app/views/posts/index.html.erb,如下: <h1> ...
- [ruby on rails] 跟我学之(8)修改数据
修改views 修改index视图(app/views/posts/index.html.erb),添加编辑链接,如下: <h1>Our blogs</h1> <% @p ...
- [ruby on rails] 跟我学之(7)创建数据
通过form来创建数据,本章节将会涉及内容:创建form,用户重导向,渲染views 和 flash消息. 1. views初步 编辑 app/views/posts/index.html.erb这个 ...
- [ruby on rails] 跟我学之(6)显示指定数据
根据<[ruby on rails] 跟我学之路由映射>,我们知道,可以访问 GET /posts/:id(.:format) 来显示具体的对象. 1. 修改action 修改 ap ...
- [ruby on rails] 跟我学之(5)显示所有数据
之前的index页,显示的是hello world,现在将其修改为显示我们在rails console里面录入的数据. 1. 修改action 如之前的章节<[ruby on rails] 跟我 ...
- [ruby on rails] 跟我学之(4)路由映射
前面<[ruby on rails] 跟我学之Hello World>提到,路由对应的文件是 config/routes.rb 实际上我们只是添加了一句代码: resources :pos ...
- 跟我一起学extjs5(18--模块的新增、改动、删除操作)
跟我一起学extjs5(18--模块的新增.改动.删除操作) 上节在Grid展示时做了一个金额单位能够手工选择的功能,假设你要增加其它功能.也仅仅要依照这个模式来操作即可了,比方说你想 ...
- [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作
[从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 目录 [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 0x00 摘要 0x01 业务领域 1.1 SOFARegis ...
随机推荐
- [C#]Attribute特性(3)——AttributeUsage特性和特性标识符
相关文章 [C#]Attribute特性 [C#]Attribute特性(2)——方法的特性及特性参数 AttributeUsage特性 除了可以定制自己的特性来注释常用的C#类型外,您可以用At ...
- DOM(八)使用DOM控制表单
1.表单简介 表单<form>是网页中交互最多的形式之一,它通过各种形式接收用户的数据,包括下拉列表框,单选按钮,复选框和文本框,本篇主要介绍表单中常用的属性和方法 javascript中 ...
- PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
一.中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $l ...
- Linux下搭建nginx php环境
下载安装所需包 openssl-1.0.1i.tar.gz zlib-1.2.8.tar.gz pcre-8.35.tar.gz nginx-1.7.4.tar.gz 以上为nginx依赖文件 lib ...
- cursor:pointer的意思
cursor规则是设定网页浏览时用户鼠标指针的样式,也就是鼠标的图形形状cursor:pointer设定鼠标的形状为一只伸出食指的手,这也是绝大多数浏览器里面鼠标停留在网页链接上方时候的样式另外可以选 ...
- xml文件的读写操作
1.直接上代码:包含了xml文档的创建,读取xml文档,创建根节点,向根节点中添加子节点,保存xml文档----------先来张效果图: static void Main(string[] args ...
- Hamcrest
Hamcrest比起JUnit的assert系列方法来,有更好的可读性,它按照参数从左到右的符合自然的顺序来展示,如actual is(notNullValue()),是对测试断言的改进.同时不会被哪 ...
- NOI题库 09:图像旋转翻转变换
NOI题库开始的题,也是略水,当然也是大水,所以彼此彼此 09:图像旋转翻转变换 总时间限制: 1000ms 内存限制: 65536kB 描述 给定m行n列的图像各像素点灰度值,对其依次进行一系列操作 ...
- Linux System Log Collection、Log Integration、Log Analysis System Building Learning
目录 . 为什么要构建日志系统 . 通用日志系统的总体架构 . 日志系统的元数据来源:data source . 日志系统的子安全域日志收集系统:client Agent . 日志系统的中心日志整合系 ...
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程
相关学习资料 http://www.360doc.com/content/10/0602/08/1466362_30787868.shtml http://www.gxu.edu.cn/college ...