我知道在Rails中我们遵循惯例。我们应该以复数形式命名控制器。
最近我聘请了一位自由职业者来帮助我在Rails中使用我的应用程序的一部分,因为我对这个框架和ruby非常陌生。
我有PortfolioController
- 这只是感觉正确,因为投资组合是条目的容器(谁说“我有投资组合”?)。
这位自由职业者表示这是不对的,我会遇到麻烦,不遵守惯例,并将其重命名为PortfoliosController
。我多次问过,如果我将控制器PortfolioController
命名为PortfoliosController
而不是{{1}},我会遇到什么问题,除了“你会遇到问题”之外,我没有得到任何解释。
那么,有谁可以告诉我这些问题是什么?
答案 0 :(得分:1)
嗯,最简单的原因是,那个在该项目上工作的人可能会在编写代码时以复数形式引用它,然后必须意识到“哦,他们决定不遵循那个控制器中的约定”在未指定的时间段“WTF?”之后他们试图弄清楚他们做错了什么。从语义上讲,您的控制器是Portfolio表中所有投资组合的控制器。
代码方面你会遇到路线问题。您必须制作一堆非标准路由,因为默认情况下http://my_app/portfolios
会转到控制器的index
操作。然后,您会使用http://my_app/portfolios/1
显示特定投资组合,该投资组合将显示id
1
的投资组合。因此,请准备好在config/routes.rb
文件中创建和维护大量自定义路由。无论是复数还是单数(例如equipment
,你可以拥有一件设备或多件设备,你会看到类似名称相同的问题。见:rails link path and routing error when model singular and plural name are the same (e.g. equipment, species)。它不仅会使您的路线变得不稳定,而且会导致portfolio_path
或portfolio_url
等方法发生冲突。