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

脚手架的使用

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

数据库操作

1.生成新的记录
①使用new构造函数
>> article = Article.new
=> #

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.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')
=> #
>> 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.count => 5

③使用id查询单条记录

>> Article.find(3)
=> #
>>article = Article.find(3) =>#
>>article.id =>3 >>article.title =>"Introduction to Active Record"

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

>> Article.first
=> #
>> Article.last => #

⑤查询多条记录

>> articles = Article.all
=> [#
#
, #
, #
, #
] >> articles.class => Array >> articles.size => 5 >> articles[0] => #
>> 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 => [#
#
, #
, #
, #
]

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

>> articles = Article.order("published_at")
=> [#
#
, #
, #
, #
] >> 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 => [#
#
, #
, #
, #
] >> articles = Article.order ('published_at DESC') => [#
#
, #
, #
, #
] >> 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.where(:title => 'RailsConf').first
=> #
>> Article.where(:title => 'RailsConf').all => [#
] >> 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
=> #

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.destroy([2,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脚手架以及数据库的基础操作)