美文网首页
Rails脚手架以及数据库的基础操作

Rails脚手架以及数据库的基础操作

作者: 风暴英雄 | 来源:发表于2014-04-11 19:53 被阅读0次
    脚手架的使用

    生成脚手架
    手动生成migration,然后每个字段生成脚手架
    rails generate scaffold Article title:string location:string excerpt:string body:text published_at:datetime --skip-migration

    数据库操作

    1.生成新的记录
    ①使用new构造函数
    >> article = Article.new
    => #<Article id: nil, title: nil, body: nil, published_at: nil, created_at: nil,
    updated_at: nil, excerpt: nil, location: nil>
    >> article.new_record?
    => true
    >> article.attributes
    => {"body"=>nil, "created_at"=>nil, "excerpt"=>nil, "location"=>nil,
    "published_at"=>nil, "title"=>nil, "updated_at"=>nil}

    Here, you’re using reader methods, which read and return the value of the attribute in question. Because this is
    a brand-new record and you haven’t given it any information, all your attributes are nil, which means they have no
    values. Let’s remedy that now using (what else?) writer methods:
     
    >> article.title = 'RailsConf'
    => "RailsConf"
     
    >> article.body = 'RailsConf is the official gathering for Rails developers..'
    => "'RailsConf is the official gathering for Rails developers.."
     
    >> article.published_at = '2013-04-13'
    => "2013-04-13"
    >> article
    => #<Article id: nil, title: "RailsConf", body: "RailsConf is the official
    gathering for Rails devel...", published_at: "2013-04-13 00:00:00",
    created_at: nil, updated_at: nil, excerpt: nil, location: nil>
    >> article.save
    (0.1ms) begin transaction
    SQL (2.2ms) INSERT INTO "articles" ("body", "created_at", "published_at",
    "title", "updated_at") VALUES (?,?,?,?,?) [["body", "RailsConf is the official
    gathering for Rails developers.."], ["created_at", Sat, 13 Apr 2013 15:50:29 UTC
    +00:00], ["published_at", Wed, 13 Apr 2013 00:00:00 UTC +00:00], ["title",
    "RailsConf"], ["updated_at", Sat, 13 Apr 2013 15:50:29 UTC +00:00]]
    (2.9ms) commit transaction
    => true
    >> Article.count
    => 1
    >> article.new_record?
    => false
    
    
    >> article = Article.new
     
    >> article.title
    = "Introduction to SQL"
    >> article.body
    = "SQL stands for Structured Query Language, .."
    >> article.published_at
    = Date.today
     
    >> article.save
    
    
    >> article = Article.new(:title => "Introduction to Active Record",
    :body => "Active Record is Rails's default ORM..", :published_at => Date.today)
    >> article.save
    

    ②使用create方法

    >> Article.create(:title => "RubyConf 2013", :body => "The annual RubyConf will
    take place in..", :published_at => '2013-04-13')
    => #<Article id: 4, title: "RubyConf 2013", body: "The annual RubyConf will take
    place in..", published_at: "2013-04-13 00:00:00", created_at: "2013-04-13
    23:17:19", updated_at: "2013-04-13 23:17:19", excerpt: nil, location: nil>
    >> attributes = { :title => "Rails Pub Nite", :body
    => "Rails Pub Nite is every
    3rd Monday of each month, except in December.", :published_at => "2013-04-13"}
    => {:title=>"Rails Pub Nite", :body=>"Rails Pub Nite is every
    3rd Monday of each month, except in December.", :published_at=>" 2013-04-13"}
    >> Article.create(attributes)
         
    => #<Article id: 5, title: "Rails Pub Nite", body: "Rails Pub Nite is every 3rd
    Monday of each month, e...", published_at: "2013-04-13 00:00:00",
    created_at: "2013-04-13 23:36:07", updated_at: "2013-04-13 23:36:07",
    excerpt: nil, location: nil>     
     
    >> Article.count
    => 5
    

    ③使用id查询单条记录

    >> Article.find(3)
    => #<Article id: 3, title: "Introduction to Active Record", body: "Active Record
    is Rails's default ORM..", published_at: "2013-04-13 04:00:00",
    created_at: "2013-04-13 23:15:37", updated_at: "2013-04-13 23:15:37",
    excerpt: nil, location: nil>
    >>article = Article.find(3)
    =>#<Article id: 3 ...>
    >>article.id
    =>3
    >>article.title
    =>"Introduction to Active Record"
    

    ④使用first和last查询单条记录

    >> Article.first
    => #<Article id: 1, title: "RailsConf", body: "RailsConf is the official
    gathering for Rails devel...", published_at: "2013-04-13 00:00:00",
    created_at: "2013-04-13 23:12:09", updated_at: "2010-04-13 23:12:09",
    excerpt: nil, location: nil>
    >> Article.last
    => #<Article id: 5, title: "Rails Pub Nite", body: "Rails Pub Nite is every 3rd
    Monday of each month, e...", published_at: "2013-04-13 00:00:00",
    created_at: "2013-04-13 23:36:07", updated_at: "2013-04-13 23:36:07",
    excerpt: nil, location: nil>
    

    ⑤查询多条记录

    >> articles = Article.all
    => [#<Article id: 1,..> #<Article id: 2,..>, #<Article id: 3,..>,
    #<Article id: 4,..> , #<Article id: 5,..>]
    >> articles.class
    => Array
    >> articles.size
    => 5
    >> articles[0]
    => #<Article id: 1, title: "RailsConf", body: "RailsConf is the official
    gathering for Rails devel...", published_at: "2013-04-13 00:00:00",
    created_at: "2013-04-13 23:12:09", updated_at: "2013-04-13 23:12:09",
    excerpt: nil, location: nil>
    >> articles[0].title
    => "RailsConf"
    >> articles.first.title
    => "RailsConf"
    >> articles.each { |article| puts article.title }
    RailsConf
    Introduction to SQL
    Introduction to Active Record
    RubyConf 2010
    Rails Pub Nite
    => [#<Article id: 1,..> #<Article id: 2,..>, #<Article id: 3,..>,
    #<Article id: 4,..> , #<Article id: 5,..>]
    

    ⑥使用order对数据进行排序
    默认是降序,我们可以使用DESC改变为升序

    >> articles = Article.order("published_at")
    => [#<Article id: 1,..> #<Article id: 2,..>, #<Article id: 3,..>,
    #<Article id: 4,..> , #<Article id: 5,..>]
    >> articles.each {|article| puts article.published_at }2013-04-13 00:00:00 UTC2013-04-13 04:00:00
    UTC2013-04-13 04:00:00 UTC2013-04-13 00:00:00 UTC2013-04-13 00:00:00 UTC
    => [#<Article id: 1,..> #<Article id: 2,..>, #<Article id: 3,..>,
    #<Article id: 4,..> , #<Article id: 5,..>]
    >> articles = Article.order ('published_at DESC')
    => [#<Article id: 4,..> #<Article id: 5,..>, #<Article id: 2,..>,
    #<Article id: 3,..> , #<Article id: 1,..>]
    >> articles.each {|article| puts article.published_at }2013-04-13 00:00:00 UTC2013-04-13 00:00:00
    UTC2013-04-13 00:00:00 UTC2013-04-13 00:00:00 UTC2013-04-13 00:00:00 UTC
    => [#<Article id: 4,..> #<Article id: 5,..>, #<Article id: 2,..>,
    #<Article id: 3,..> , #<Article id: 1,..>]
    

    ⑦条件查询

    >> Article.where(:title => 'RailsConf').first
    => #<Article id: 1, title: "RailsConf", body: "RailsConf is the official
    gathering for Rails devel...", published_at: "2013-04-13 00:00:00",
    created_at: "2013-04-13 23:12:09", updated_at: "2013-04-13 23:12:09",
    excerpt: nil, location: nil>
    >> Article.where(:title => 'RailsConf').all
    => [#<Article id: 1, title: "RailsConf", body: "RailsConf is the official
    gathering for Rails devel...", published_at: "2013-04-13 00:00:00",
    created_at: "2013-04-13 23:12:09", updated_at: "2013-04-13 23:12:09",
    excerpt: nil, location: nil>]
    >> Article.where(:title => 'Unknown').all
    => []
    

    ⑧更新记录
    >> article = Article.first
    >> article.title = "Rails 4 is great"
    >> article.published_at = Time.now
    >> article.save
    => true
    也可以一次性更新多个字段
    >> article = Article.first
    >> article.update_attributes(:title => "RailsConf2013", :published_at => 1.day.ago)
    => true
    或者更新一个字段
    >> article = Article.first
    >> article.update_attribute(:title => "RailsConf2013")
    => true
    ⑨删除记录
    >> article = Article.last
    >> article.destroy
    => #<Article id: 5, title: "Rails Pub Nite", body: "Rails Pub Nite is every 3rd
    Monday of each month, e...", published_at: "2013-04-13 00:00:00",
    created_at: "2013-04-13 23:36:07", updated_at: "2013-04-13 23:36:07",
    excerpt: nil, location: nil>
    #或者在一行里面操作
    >> Article.last.destroy

    >> Article.destroy(1)
    => [#<Article id: 1, title: "RailsConf", body: "RailsConf is the official
    gathering for Rails devel...", published_at: "2010-02-27 00:00:00",
    created_at: "2010-05-01 23:12:09", updated_at: "2010-05-01 23:12:09",
    excerpt: nil, location: nil>]
    
    #删除多条记录
    >> Article.destroy([2,3])
    => [#<Article id: 2, ..>, #<Article id: 3, ..>]
    

    使用destroy是没有返回值的,如果需要返回值,我们可以使用delete方法来删除记录
    >> Article.delete(4)
    => 1

    #数据库中不存在5到6的记录,所以返回0
    >> Article.delete([5, 6])
    => 0
    

    规定条件删除相应的记录
    >> Article.delete_all("published_at < '2011-01-01'")
    >> 0

    相关文章

      网友评论

          本文标题:Rails脚手架以及数据库的基础操作

          本文链接:https://www.haomeiwen.com/subject/bgjltttx.html