ruby 功力修鍊

來源:互聯網
上載者:User

標籤:

建表
ActiveRecord::Schema.define do  drop_table :hosts if table_exists? :hosts  create_table :hosts do |table|    table.column :name, :string  end  drop_table :disks if table_exists? :disks  create_table :disks do |table|    table.column :host_id, :integer    table.column :dev_name, :string    table.column :mnt_point, :string    table.column :mb_available, :integer  end  drop_table :reports if table_exists? :reports  create_table :reports do |table|    table.column :disk_id, :integer    table.column :created_at, :datetime    table.column :mb_used, :integer  endend

上述代碼總共建立了 :hosts、:disks和:reports三張表。

網路上找到的絕大多數樣本都沒有drop_table這句話,我個人認為練習的時候會頻繁地測試,加上自動刪除才是完整的步驟。

此處的功能應該就是對應Rails裡migration過程。

5. 定義模型

這一步進入正題,定義在代碼中使用的對象,即資料模型

class Host < ActiveRecord::Base  has_many :disksendclass Disk < ActiveRecord::Base  belongs_to :host  has_many :reportsendclass Report < ActiveRecord::Base  belongs_to :diskend

對象與之前定義的表一一對應,其中用belongs_to和has_many等宏聲明了對象/表之間的聯絡。根據DRY原則,此處無需再定義表的欄位!

這一步就是在Rails中定義model的過程。

6. 產生資料
host = Host.create(:name => "slarti")disk = host.disks.create(:dev_name => "/dev/disk1s1",                         :mnt_point => "/",                         :mb_available => 80 * 1024)disk.reports.create(:mb_used => 20 * 1024)disk.reports.create(:mb_used => 25 * 1024)

通過操作上一步定義的資料模型即可實現插入資料。

7. 檢索
Host.all.each do |host|  puts "*** #{host.name} ***"  host.disks.each do |disk|    printf "%s(%s) %d/%d\n", disk.mnt_point, disk.dev_name, disk.reports.last.mb_used, disk.mb_available  endend

ruby 功力修鍊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.