###### tags: `Ruby` # 沙盒模式 (rails c --snadbox) ![](https://i.imgur.com/nGQ1wm6.png) ![](https://i.imgur.com/XvRnqNz.png)save後自動生出id 以及時間 ![](https://i.imgur.com/4yDj8zV.png)第二次save變成update ![](https://i.imgur.com/fgVUtrL.png)檢查是否更動可以用xxx.changed? ![](https://i.imgur.com/WZhkNgn.png)如果要更改可以這樣如果要多筆一起更改![](https://i.imgur.com/WthE2OP.png) 資料驗證這件事放在model這裡做 因為可以重複使用若是在controller裡做那每個controller都要再寫一次 model 以及資料庫都需要做驗證 ![](https://i.imgur.com/VwXT3fa.png)加入驗證email、password必填 ![](https://i.imgur.com/7v3UlJy.png)測試 # 實作 ![](https://i.imgur.com/cdECuWT.png)寫進資料庫前必須再驗證一次只靠token不夠 ![](https://i.imgur.com/xYd1Llp.png)可以透過開發工具新增欄位 ![](https://i.imgur.com/6RKBfDc.png)強參數過濾 ![](https://i.imgur.com/T8fMet3.png) password_confirm不再資料表欄位裡所以它不認得(虛擬欄位) ![](https://i.imgur.com/ZtNu5FW.png)解決方案 ![](https://i.imgur.com/2qHG7lN.png)將強參數變回私有方法 ![](https://i.imgur.com/ttCq4wD.png)整理一下用user_params代替 每當定義方法都會再建立一個符號 ex: def cat 就會有一個 :cat 功能相同 不 ![](https://i.imgur.com/bM4aQl3.png)失敗部分 不使用redirect 使用render :sign_up 使資料保留並用sign_up.html.erb的畫面再畫一次頁面 ![](https://i.imgur.com/j8iyVLp.png) ![](https://i.imgur.com/WjBYlSL.png) ![](https://i.imgur.com/OY8NxuC.png) ![](https://i.imgur.com/01vPQvs.png) 將 User.new 指定為@user,再sign_up設定實體變數@user 也把registration方法裡的變數設為@user因為registration裡 失敗時render sign_up頁面所以需要 @user這個變數因為我們將 form_for的參數改為@user 代替User.new 。故意湊成這樣的巧合 ![](https://i.imgur.com/qEuaTrr.png) 可把所有css打包成1個檔案 require_tree . require資料所有檔案 ![](https://i.imgur.com/p38hCKV.png)手動增加scss檔寫css讓錯誤時格式正常 ![](https://i.imgur.com/MBiElRp.png) ![](https://i.imgur.com/sKj3Xos.png)讓錯誤時跑出訊息![](https://i.imgur.com/34Dsq5j.png) ![](https://i.imgur.com/lbNJIrO.png) 在後面加上 取代原本的驗證 ![](https://i.imgur.com/rKA4rI6.png) 把原本的驗證刪掉 ![](https://i.imgur.com/ETYbMKx.png) 強參數裡的也要改 ![](https://i.imgur.com/wD82V1u.png)做更多限制 ![](https://i.imgur.com/VrjB586.png)成果畫面 ![](https://i.imgur.com/ie2TMTs.png)做登出按鈕 ![](https://i.imgur.com/E1dtNaa.png)logout_path路徑 去對照表找 ![](https://i.imgur.com/bJ1Pxj4.png) ![](https://i.imgur.com/ylE3LDF.png) ![](https://i.imgur.com/QA3sG6B.png)