你好,我是富士大顆 Aiko
這個會被問到爛的概念,你一定要知道
CoC = Convention over Configuration 慣例優於設定
簡單介紹常見的 Rails Conventions:
Ruby on Rails(簡稱 Rails)是一個基於 Ruby 的網頁框架,它有一個很重要的設計原則叫做 Convention over Configuration(慣例優於設定,COC)。這個原則讓開發者可以用更少的程式碼和設定來完成更多的事情,最重要的就是開發速度RRR。以下介紹一些 Rails 中重要的慣例:
資料夾結構(Directory Structure): Rails 有一個特定的資料夾目錄結構,如 app/models
存放模型(Model)、app/controllers
存放控制器(Controller)等。
命名規則(Naming Conventions): Rails 對類別名稱、資料表名稱等都有特定的命名規則。例如,一個名為 User
的模型會對應到名為 users
的資料表。單複數在一開始真的會滿難記得,所以多寫來加深印象吧!另外 Rails 使用駱駝式命名法(CamelCase)用於類別(class)名稱,而蛇型命名法(snake_case)用於變數和函式名稱(function)
路由(Routing): 在 config/routes.rb
檔案中定義 Routs。Rails 會依照 RESTful 架構去設計路由,並預設使用七個基本的 CRUD 操作(index
, show
, new
, create
, edit
, update
, destroy
)。直接送,真的是直接送給你。
資料庫遷移(Database Migrations): 使用 rake db:migrate
,可以更改資料庫結構而不需要手動調整 SQL。例如:執行 rails generate migration AddEmailToUsers email:string
會生成一個migration 遷移檔案,接著執行 rails db:migrate
就會將 email 欄位加入 users 表。
ActiveRecord: 這是 Rails 的 ORM(Object Relational Mapping)工具。不需要寫 SQL 語法來進行資料操作,Rails 會根據模型和資料表的命名和結構來對映。例如:User.find(1)
會找到 users 表中 id 為 1 的記錄,而不需要寫 SQL 指令: SELECT * FROM users WHERE id = 1 LIMIT 1
。
DRY(Don't Repeat Yourself): 不要重複。這不僅是 Rails,也是一般程式設計的好原則。Rails 提供各種方式(例如,partials, helpers, concerns)來讓你遵循這個原則。例如:使用partial _form.html.erb
來rend 重複樣貌表單的 HTML 程式碼。concern 則可以把「通用的或相關的方法」集中成一個 concern,再讓 Concern 包含在多個 Module 裡,讓多個 class 可以共用。Concern 就是 Ruby 裡的 module,需要使用的時候是引入,而非類別方法的繼承。
Strong Parameters(強型別參數,俗稱洗資料): 在控制器中,為了安全考量,Rails 4 以上版本需要明確指出哪些參數是允許傳送來進行資料庫操作的。例如:在 Controller 中使用 params.require(:user).permit(:name, :email)
來限制允許 name
和 email
參數進來操作。
Asset Pipeline(資源管道): 統一管理 JavaScript、CSS 和圖片等前端資源,使之更容易開發和維護。例如:將所有的 CSS 檔案放在 app/assets/stylesheets 目錄下,Rails 會自動將它們合併和壓縮。也比較好找~
I18n(國際化): Rails 內建支持多語言,讓你可以輕鬆地將應用程序本地化。例如:使用 I18n.t('hello') 在不同的語言設定下顯示不同的問候語。
以上這些都是 Rails 中不可或缺的慣例和設計原則,讓開發更快速、更高效。遵循這些慣例,你會發現自己可以用更少的時間和精力來建立功能豐富、可維護的應用程式。
下一篇來介紹 MVC !