约定优于配置是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.
这边总结的规律是: