# [08/09_a] Rails實作 M => V ## 什麼是Migration * 資料表的演進過程。 * 基於歷史紀錄,可做版本控制。 * 會記錄在 schema.rb 檔案以及 sqlite3 的 schema_ 裏面。 * 指令 * **db:migrate** 掃視新資料,僅限一次。 * db:rollback 做逆向工程,讓他反向操作(還原)。 * 或是 db:schema:load 根據schema.rb 載入檔案,還原資料庫。 * db:migrate前記得存擋,不然無法呈現,只能作一次。 ## Model層級中之資料庫關聯性 - 一對一:belongs_to - 一對多:has_many ## 建立Model 產生Model的過程,要建立一個資料表。 因為Model是抽象概念,資料表/資料庫是實體存在的。所以只建立Model不夠,還要建立Migration(描述資料表內容)。 網址後面通常是 model 的名字。 開兩個ubuntu終端,一個啟動rails server不要關,一個做事。  1. model名稱用**首字大寫單數,對應migrate表格/Views目錄下的同名複數**。不能跟專案名稱、其他model或是保留字一樣。 撞名:model 名稱不能與 專案名稱、其他 model 或是保留字一樣。 3. 新model名(user)後面接欄位(欄位生成migration): > $ **rails g model** User account:string password:string email:string nickname:string 4. 欄位為字串型態(string)可不寫。 > $ **rails g model** User account password email 5. 產生新檔案: 1. 產生"app/model"下的新rb檔(不用編輯) 3. 產生 **"db/migrate"下的新rb檔** -可建立真正的資料表 -會得到**複數model名的migration!** -會自動加時間戳記timestamps 1. 建立新表格資料庫(會在建立在"db/**development.sqlite3**): > **$rails db:migrate** 1. 安裝DB Browser for SQLite檢視專案的db目錄 字串string屬性在裡面會顯示為varchar 萬一寫錯要刪除 > $rails **d** model User account password email ## 建立表單 利用Routes給出的路徑。參見RB-15。 ## 異動Migration ### (危險指令) 建立新表格失敗時,可撤回上一步 **出現no such table錯誤時:** 1. 先將migration註解掉,存檔 1. rollback回上一步 > $rails db:rollback 3. 解除註解再重來db:migrate建立新表格 **若有表格改名,就建新的migrate。盡量往前走,不要回溯。** > $rails g migration 新名字 ### (危險指令) 資料庫被刪除,可逆轉 根據schema.rb這個檔案,自動載入檔案,跳過錯誤,還原資料庫。 > $rails db:schema:load ------------ 利用利用resources 創造8條路徑中path,開始建立表單(從view抓model)。見下一篇筆記。 ------------ 補充: Python有一個django框架。 ###### tags: `Rails` ###### tags: `面試題`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up