約定優於配置是Rails三大哲學之一。Rails中充滿了不少約定,本頁面對遇到的約定作一個總結。javascript
Model用單數由於它表示一個對象如User,
數據庫表用複數由於它存放的是對象的集合,
Controller用複數由於它是對對象集合的操做java
Routes.rb中定義session通常用resource :session,而不是普通的resources :sessions。由於通常只會操做當前用戶的session,不會操做全部session,因此不能定義爲複數。
即若是一個請求一個資源時不須要指定ID,就在routes中用單數,如/profile顯示當前登陸用戶的信息,這樣你可使用單數的/profile而不是/profile/:id。
也能夠用match 「profile」 => 「users#show」數據庫
Controller中能夠用變量request,而後能夠獲得session, request_info, head, method等請求信息
.與#使用慣例:在閱讀書時常常會遇到User.all, users#show這樣的表示,其中的點.與井號#使用也是有約定的,點.用於調用類方法,井號#用於調用實例方法。restful
最重要的是要一致, 不要一下子單數, 一下子複數; 一下子首字母小寫, 一下子首字母大寫. 若是不能作到徹底一致, 至少努力作大大部分狀況下一致.session
變量名的單複數和大小寫問題url
考慮下面三條命令:spa
其中比較容我困惑的是user這個單詞, 出如今不一樣的場合可能有下面四種狀況:設計
上面的狀況在railstutorial這本教程裏面出現了至少3種, 在閱讀的時候給我形成了很大的困惑. 我想, 到底什麼纔是最爲推薦的? 若是不按照教程上面的例子作會不會有什麼問題?rest
實驗的結論:對象
最終的解決方案:
文件名的單複數問題
通過觀察, rails全部的常見的文件名都是小寫的. 因此大小寫的問題沒有爭議, 都用小寫便可.
可是單複數問題不太統一, 好比users_contoller.rb, model/user_spec.rb.
這邊總結的規律是: