为什么控制器名为“users_controller.rb”,而模型未命名为“user_model.rb”?
为什么有“application_controller.rb”,但在内部视图中,文件夹“layout”未命名为“application”?
答案 0 :(得分:2)
Ruby on Rails遵循"Convention over configuration"原则。特别是Rails广泛使用命名约定,同时将路由映射到控制器,自动加载和重新加载类,为动作找到合适的模板以及许多其他功能。
这个原则会导致一些限制,因为你不能轻易打破一些惯例而不会遇到麻烦。但另一方面,它使我们的生活更轻松,因为我们获得了更少的配置,并且可以轻松地从一个Rails项目移动到另一个,因为它们都具有相似的结构并遵循相同的约定。此外,我相信,这使得Rails核心开发变得更加容易,因为核心团队有很多关于如何构建使用Rails的项目的信息,而且他们不必担心泛化。他们只是假设你遵守规则并遵循惯例。
尽管如此,我怀疑许多命名惯例背后都有严重的推理。我想在某些时候,有人刚刚决定让Rails处理你的控制器更容易,并且如果它们都有Controller
后缀,则将它们与其他类区分开来。在这里,我们将app/controllers
目录中的所有控制器都带有该后缀。
答案 1 :(得分:2)
当命名支持开发人员内部问题模型时,代码最好从思想流出。在构建应用程序时,我不会想到找到用户模型(UserModel.find
)我想找到一个用户(User.find
)。另一方面,控制器是Web界面和数据存储(以及业务逻辑)之间的转换层,因此将它们称为不同的东西更有意义。
还有命名空间的问题;如果我的模型和控制器都被命名为User,那么在任何给定时刻我指的是哪个用户?在这种情况下,要么用你的类型命名所有内容,这会遇到我上面描述的问题,要么就是“胜利”。并允许被引用' bare'。似乎最有意义的是模型会赢,以便提供更好的心理映射。
内部app/views/layout
是application.html.erb
,您可以使用其他控制器选择的其他布局。
然而,最终,这些是在Rails开发过程中做出的选择,并且它们完全是基于开发人员认为最有意义的选择的风格选择,因此它并不是真正的'对& #39;不幸的是,回答你的问题。事实上,已经重新审视了一些类似的决定。 (application_controller.rb
过去常被命名为application.rb
。)