這是一個小型的徵才專案,需要使用 Ruby on Rails 來開發簡易的 API Server。
同時我們也認為在程式開發的過程中溝通是很重要的,所以如果過程中你有任何問題,不論是看不懂我們所寫的文件,或是需求內容的確認,請用我們是同一個團隊一起合作的模式來進行,在 slack channel 中和我們討論。
- 必須使用 Ruby on Rails 開發
- 測試必須使用 RSpec
- Ruby 使用 2.7.4 或以上的版本,Rails 版本使用 6.1 或以上的版本,其餘工具的版本以相容的穩定版本為主
- 專案原始碼必須放在 GitHub 上
- 可以使用第三方的 Gem
- 請開發一個線上課程的管理後台 API,包含以下功能
- 課程列表
- 課程詳細資訊
- 建立課程
- 編輯課程
- 編輯單元
- 刪除課程
- 請將完成後的 API server 發佈到 Heroku 或其他可以提供部署的服務上
- 完成後的 API 需要有相對應的測試
- 提供一份 README 文件說明
- 我們該如何執行這個 server
- 專案的架構,API server 的架構邏輯
- 你對於使用到的第三方 Gem 的理解,以及他們的功能簡介
- 你在程式碼中寫註解的原則,遇到什麼狀況會寫註解
- 當有多種實作方式時,請說明為什麼你會選擇此種方式
- 在這份專案中你遇到的困難、問題,以及解決的方法
使用者可以透過線上課程的管理後台,列出、查看、新增、編輯、刪除課程,以及編輯課程內的單元。
每一個「課程」中可以含有多個「單元」
「課程」中需要包含的資訊是:
- 課程名稱 (必填)
- 講師名稱 (必填)
- 課程說明 (非必填)
「單元」中需要包含的資訊是:
- 單元名稱 (必填)
- 單元說明 (非必填)
- 單元內容 (純文字的文章內容) (必填)
請設計一個 API 提供使用者取得系統中所有「課程」的資訊,其中包含課程中的「單元」資訊。
請設計一個 API 提供使用者取得指定「課程」的資訊,其中包含課程中的「單元」資訊。
請設計一個或多個 API 提供使用者建立「課程」與課程中的「單元」。
- 需要驗證使用者的輸入並在儲存失敗時回傳錯誤訊息
- 需要儲存「單元」的順序
請設計一個 API 提供使用者編輯特定「課程」
- 需要驗證使用者的輸入並在儲存失敗時回傳錯誤訊息
- 「單元」的順序可以被調整
請設計一個 API 提供使用者編輯課程中的特定「單元」。
- 需要驗證使用者的輸入並在儲存失敗時回傳錯誤訊息
請設計一個 API 提供使用者刪除指定的「課程」。
- 當「課程」被刪除時,「課程」中的「單元」也應該同時被刪除。
- 當「課程」刪除失敗時,需要回傳錯誤訊息
- 程式的可讀性與可維護性
- 可靠、可讀、可維護的測試
- 對於接收資料的各種 edge case 的處理