# 12/11(五)有限狀態機, 訂單解釋, 套件說明 ###### tags: `龍哥` ### 10:30- 講解專案執行流程,可以先買好網域 ### 燃盡圖 *  * 將每份功能點數化,並且把現有人力以及deadline皆列入考慮,推測出每天應該消耗的燃料,預設最理想的是當到了deadline那天,燃料會剛好燒完。 ### 如何解讀一份套件 1. 先看Readme 2. gem file若上線會用到則放外面,若只有開發用到則放 ### 訂單的設計 * 訂單編碼最好不要以日期、單量呈現,以免遭推敲出每天賣出量 * 訂單的價格應該以當下的狀態(例如雙11折扣),不要連動資料庫的價格 * 就算商品、活動也下架的話,仍然也該顯示出我的訂單 * 訂單通常是有連動的,取消訂單應該會寄發email, ... * pending訂單處理中→confirmed訂單已確認→paid訂單已付款 * peding處理中、confirmed已確認、paid已付款、shipped已出貨、delivered已到貨、cancelled已取消 * 狀態建立在model的欄位 *  ### 有限狀態機 *  *  * https://app.diagrams.net/#Hsamliuforwork%2FPr-test%2Fmain%2Ffinite-state%20machine.drawio * https://github.com/aasm/aasm ## 實用套件使用說明 ### paranoia * https://github.com/rubysherpas/paranoia ### kaminari(淺草雷門) * 做留言分頁效果 * The per Scope `User.page(7).per(50)` * 11:30 #### AASM (狀態機好幫手) * 新增'state(文字)'到看板(在model) ``` * aasm do # default column: aasm_state state :sleeping, initial: true state :hidden, :locked event :hide do transitions from: :public, to: :hidden end event :lock do transitions from: :public, to: :locked end event :open do transitions from: [:locked, :hidden], to: :public end end ``` * b1.open? * b1.may_open? 詢問是否能夠進行open * 為了避免人為蓄意修改資料庫,加入no_direct_assignment: true #### FriendlyId * 讓網址好看,同時SEO也加分 * https://blog.niclin.tw/2016/06/04/%E4%BD%BF%E7%94%A8-friendly_id-%E8%88%87-babosa-%E7%BE%8E%E5%8C%96%E4%BD%A0%E7%9A%84rails-%E7%B6%B2%E5%9D%80/ ### cancan * 授權 ### Pundit * 可以判斷能不能做這件事 * 高級寫法(通常用在套件) ``` def check?(obj, type) obj.send("may_#{type}?") && policy(obj).send("#{type}?") end ```
×
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