以单数形式命名控制器的缺点是Rails?

时间:2014-01-13 02:34:52

标签: ruby-on-rails ruby naming-conventions convention-over-configur

我知道在Rails中我们遵循惯例。我们应该以复数形式命名控制器。 最近我聘请了一位自由职业者来帮助我在Rails中使用我的应用程序的一部分,因为我对这个框架和ruby非常陌生。 我有PortfolioController - 这只是感觉正确,因为投资组合是条目的容器(谁说“我有投资组合”?)。 这位自由职业者表示这是不对的,我会遇到麻烦,不遵守惯例,并将其重命名为PortfoliosController。我多次问过,如果我将控制器PortfolioController命名为PortfoliosController而不是{{1}},我会遇到什么问题,除了“你会遇到问题”之外,我没有得到任何解释。

那么,有谁可以告诉我这些问题是什么?

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_pathportfolio_url等方法发生冲突。