iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
Software Development

SQL rookie 之天天魯一下系列 第 2

Day 2 - 建立魯魯專案和兩張資料表

  • 分享至 

  • xImage
  •  

嗨,大家好!被翻爛的書掙扎一番後終於寫下了Day 2 的文章囉!

今天的任務是要先將練習用專案準備好,以便後續研究、練習Active Record 的query 方法,因此也不能少了資料庫的資料,所以就請各位一同先把專案new 出來,並準備好兩張資料表吧!

# new 專案
rails new rookie_sql

# 因目前筆者電腦的rails version 還是6.0.6,如果要跟爛書用一樣的版本,可以指定rails 版本new 專案
rails _6.0.6_ new rookie_sql

# 此外因為未來想練習的資料庫以postgres 為主,也可以在後方加參數--database=postgresql 指定以pg 為資料庫
rails _6.0.6_ new rookie_sql --database=postgresql

好了之後我們就下指令來產生資料表吧!

# 記得先cd 到專案內
cd rookie_sql

# 建立第一個資料表:筆者想建立個生態系統的物種關聯表,注意Model 是用單數:
rails g model Podcast name:string genres:integer host:text introduction:text

好了後應該可以看到migration:

class CreatePodcasts < ActiveRecord::Migration[6.0]
  def change
    create_table :podcasts do |t|
      t.string :name
      t.integer :genres
      t.text :host
      t.text :introduction

      t.timestamps
    end
  end
end

確認各個欄位的名稱和形態沒問題後,就大膽migrate

rails db:migrate

== 20220916145623 CreatePodcasts: migrating ===================================
-- create_table(:podcasts)
   -> 0.0076s
== 20220916145623 CreatePodcasts: migrated (0.0076s) ==========================

若有還需要調整的地方,如被翻爛的書想將host 的欄位形態調整成string,便需先用rollback 將Db revert 回到migrate 前的狀態:

rails db:rollback

== 20220916145623 CreatePodcasts: reverting ===================================
-- drop_table(:podcasts)
   -> 0.0041s
== 20220916145623 CreatePodcasts: reverted (0.0078s) ==========================

接著再次執行:rails g model Podcast name:string genres:integer host:string introduction:textrails db:migrate

執行完這步便能在generate 一個名為Podcast Model 的同時,建立一個同名的table;

接著也能到db/schema.rb 查看資料表的狀況:

  create_table "podcasts", force: :cascade do |t|
    t.string "name"
    t.integer "genres"
    t.string "host"
    t.text "introduction"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

最後就是重複以上動作建立另一張表,以完成今天的任務,同時構思資料內容要怎麼假造;
明天就能開始seeding database 了!


上一篇
Day 1 - Rookie 宣言及魯文大綱
下一篇
Day 3 - Seeding 魯魯專案#1
系列文
SQL rookie 之天天魯一下30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言