over 3 years ago

ROR的原則有一項是:
不要重複自己(DRY: Don’t Repeat Yourself) – 撰寫出重複的程式碼是件壞事
那使用before_action的話,就可以收納很多重複的程式碼,不需要一直在每個function裡面都寫同一行程式碼,可以直接在開頭寫上before_action的功能,意義就是在每個funtion執行前先執行這個action。

before_action的意思就是要求 Rails在run controller下的 action 前要先跑指定的method。相對的after_action就是跑完 action 後才要跑的method,至於around_action就是之前之後都要跑(嘖嘖,真貪心)。

以下為before_filter的示範:

class TopicsController < ApplicationController

  before_action :find_board

  def index
      @topics = @board.topics
  end

  def find_board
      @board = Board.find(params[:id])
  end
end
 
over 3 years ago

路徑的前綴詞

namespace :admin do
resources :products
end

可以reach到的路徑就會是admin/products

 
over 3 years ago

一般表單送到後端時,所有欄位的參數都會送出,如果對方想hack你的網站時,便可以猜測欄位進行竄改。那有可能是把使用者的權限改成admin,這樣一來網站的危險就大幅上升,那我們就會使用 strong parameter的功能,只允許部分欄位的參數通過,以防止猜測欄位的hack。

 
over 3 years ago

來自xdite課程的範例

  1. 身為商家的管理者,我要能夠在後台上架我的東西,並設定能夠販賣
    1. 身為管理者,我可以上傳一個商品的物品敘述及圖片
    2. 身為管理者,我可以上傳一個商品的規格、價格及庫存
    3. 身為管理者,我可以設定一個商品是否能夠上架販售
  2. 身為商家的管理者,我要能夠在後台設定權限,權限分成管理者以及消費者
  3. 身為商家,我應該可以收到消費者下訂的訂單,並設定為已結帳
    1. 身為管理者,可以在後台看訂單,訂單狀態分為未結帳、已結帳、出貨中、已出貨、辦理退貨
    2. 身為管理者,我可以在後台對單張訂單做狀態改變
    3. 身為管理者,當我在將商品設為已出貨時,消費者應該收到一張已出貨的通知信
  4. 身為商家,當消費者確定購物結帳後,該商品的庫存必須按照數量減少
  5. 作為一個消費者,我要在前台能夠找到商品並結賬
    1. 身為消費者,我要在前台能夠找到商品並加到購物車
    2. 身為消費者,我要在前台能夠將多樣商品加到購物車,並生成一張訂單
      1. 身為消費者,當系統生成一張訂單後,我可以填寫寄送資訊,並且用信用卡結帳
      2. 身為消費者,當我用信用卡結帳後,我的信箱要能收到一張訂單確認信
  6. 作為一個消費者,在商家出貨後,應該收到一張已出貨的通知信。
    1. 作為一個消費者,當我收到已出貨的通知信後,可以在使用者後台看到該張訂單
    2. 作為一個消費者,我可以在使用者後台看到我所有的歷史訂單
 
over 3 years ago

Computational Thinking

使用user story去思考使用者的模式,從使用者的角度去想像事情會怎麼發生,在依序展開各個事情發生的步驟以及條件所需。

 
over 3 years ago

了解使用者的角度進而去做出所需的功能,讓功能分割成每一個小的細節,實作上才不會覺得毫無頭緒。