[ruby on rails] 跟我学之基于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,谢谢!

时间: 2024-12-11 10:11:51

[ruby on rails] 跟我学之基于rails console的查增删改操作的相关文章

基于SSM实现的MySQL增删改查

之前自学完了JAVA基础,一直以来也没有做什么好玩的项目,最近暑假,时间上比较空闲,所以又学习了一下最近在企业实际应用中比较流行的SSM框架,以此为基础,通过网络课程,学习编写了一个基于SSM实现的MySQL增删改查的网站,好了废话不多说,下面介绍一下项目. 首先,页面的UI是使用了Bootstrap框架快速搭建的,这个框架还是比较好用的,不但快速,而且美观,风格偏扁平化.而且对于我这种英文渣渣来说,有中文的帮助文档,简直不要太好上手,然后搭建好的大致效果图就如1-1所示,当然搭建好的只是静态页

基于Form组件实现的增删改和基于ModelForm实现的增删改

基于Form组件实现的增删改和基于ModelForm实现的增删改 一.ModelForm的介绍 ModelForm a. class Meta: model, # 对应Model的 fields=None, # 字段 exclude=None, # 排除字段 labels=None, # 提示信息 help_texts=None, # 帮助提示信息 widgets=None, # 自定义插件 error_messages=None, # 自定义错误信息(整体错误信息from django.cor

Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】

Spring mvc整合mybatis例子, 基于mysql数据库实现对用户的增.删.改.查,及分页显示的完整例子. 查询显示用户 添加用户 更新用户 官方验证: 项目截图 必须修改applicationContext.xml中mysql的配置为本地的,否则启动失败. 另外jar包多一个ehcache.jar无关紧要,删除即可. 1. 使用阿里巴巴Druid连接池(高效.功能强大.可扩展性好的数据库连接池.监控数据库访问性能.支持Common-Logging.Log4j和JdkLog,监控数据库

基于Angular5和WebAPI的增删改查(一)

由于公司后续项目重构,可能会用到Angular5. 所以花点时间学习一波,把学习成果分享给大家. 因为是事后补写帖子,很多描述比较简略.有疑问的地方,还请多多指教! 开始之前,你需要给你的计算机,安装一个angular环境(不会请google,有很多帖子). 懒人可走下面链接 https://www.angular.cn/(angular中文站) https://www.jianshu.com/p/327d88284abb(angular cli安装和使用教程) Begin 1.首先要清楚几个概

基于mongodb的python之增删改查(CRUD)

1,下载mongodb的python驱动,http://pypi.python.org/pypi/pymongo/,根据操作系统和python平台版本选择相应的egg或exe安装. 2,新建一个py脚本(可以在eclipse下安装pydev插件,很方便) #coding=utf-8 import pymongo connection = pymongo.Connection("192.168.0.101", 27017) db = connection.python print db.

JAVA基于File的基本的增删改查

直接上代码 public class TestFile { /** * 创建目录 * @param filename 路径 */ public static void createFile(String filename) { File file = new File(filename); if(!file.exists() && !file.isDirectory()) { file.mkdir(); } } /** * 删除目录 * @param file 文件 * @throws E

基于Entity Framework的自定义分页,增删改的通用实现

简介 之前写个一个基于Dapper的分页实现,现在再来写一个基于Entity Framework的分页实现,以及增删改的通用实现. 代码 还是先上代码:https://github.com/jinweijie/EF.GenericRepository 如何运行示例 还是像先前一样: 1. 先Clone下代码,在Database里面解压缩Database.7z 2. Attach到Sql Server LocalDB上.如果你用的不是Sql Server的LocalDB,你需要更改App.Conf

基于视图的增删改查操作(颠覆传统思维吧)

视图是关系型数据库提供的一个非常强大好用的功能,它提供了一种基于基本表(相对视图的虚拟表而言)的数据提取重组和分隔技术. 视图通过对一个或者多个基本表进行数据提取和重新组织,将数据以用户希望的方式重新呈现. 需要注意的是,视图的主要目的就是重新组织多个基础表的数据以新的方式展现,重点是数据展示,并不涉及到增删改的功能.(另一个主要功能是数据隔离) 对于现有市场上不同的数据库来说,对于视图的增删改都不支持,或者说支持的很不好,有很多约束条件. 有人说过,产品功能是有限的,用户需求是无限的,真理.我

[ruby on rails] 跟我学之创建数据

通过form来创建数据,本章节将会涉及内容:创建form,用户重导向,渲染views 和 flash消息. 1. views初步 编辑 app/views/posts/index.html.erb这个view文件,如下: <% @posts.each do |post| %> <h2><%=link_to post.title,post%></h2> <%=post.context%><br/><hr/> <% en