Controller
針對 View 的需求,跟 model 拿資料
再回來處理這些資料
Routes 會指引到對應的 Controller 及 action
1 | Prefix Verb URI Pattern Controller#Action |
全站都會用到的方法,就放 ApplicationController
1 | class ApplicationController < ActionController::Base |
private method
僅限於 此 Controller 採用的方法
1 | private |
功能應用
callback
多個方法都會做的動作,就會拉出來做callback
動作通常會被放在private中
以下舉例
1 | # show、unlock方法,在執行前需要去找 article |
清洗資料
1 | # 針對要資料做清洗,避免存入髒資料 |
軟刪除
講白話一點,就是這個刪除是演出來的
這筆資料並不會被刪除
那這筆資料到底發生了什麼事?
首先,我們會有 deleted_at 欄位
在刪除的時候把確切時間寫入
之後再將這筆資料隱藏起來
1 | # controller |
1 | # model |
session
當使用者登入時,我們需要發給他號碼牌
這時候我們就會用 session 來存使用者的 id
這個 session 會跟 cookie 核對並儲存
下次使用者再來
session跟cookie核對成功就不用再登入了
1 | def create |
記憶 memorization
為了減少資料庫的存取次數,我們可以在判斷時加上 ||= 或 &.
1 | def current_user |
rescue_from
如果使用者按到沒有資料的頁面(例如 第2000筆user)
應出現 404 頁面
除了告訴使用者沒有這筆紀錄外
也要跟瀏覽器說這個頁面是錯誤的
rescue_from可以幫我們處理error的資料
避免使用者瀏覽的時候出現錯誤的畫面
1 | class ApplicationController < ActionController::Base |
- 額外補充:放在public的東西不會走正常流程的(routes),怕伺服器出狀況,會連檔案都找不到