腳手架的使用
生成腳手架
手動生成migration乖仇,然后每個字段生成腳手架
rails generate scaffold Article title:string location:string excerpt:string body:text published_at:datetime --skip-migration
數(shù)據(jù)庫操作
1.生成新的記錄
①使用new構(gòu)造函數(shù)
>> 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對數(shù)據(jù)進(jìn)行排序
默認(rèn)是降序抗愁,我們可以使用DESC改變?yōu)樯?/p>
>> 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
#數(shù)據(jù)庫中不存在5到6的記錄惰聂,所以返回0
>> Article.delete([5, 6])
=> 0
規(guī)定條件刪除相應(yīng)的記錄
>> Article.delete_all("published_at < '2011-01-01'")
>> 0