2

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

那么,谁能告诉我这些问题是什么?

4

1 回答 1

1

好吧,最简单的原因是,从事该项目的任何其他人在处理代码时可能会以复数形式引用它,然后必须在未指定之后意识到“哦,他们决定不遵循该控制器中的约定” “WTF?”的时间段 当他们试图弄清楚他们做错了什么时。同样在语义上,您的控制器是投资组合表中所有投资组合的控制器。

在代码方面,您将遇到路线问题。您将不得不制作一堆非标准路由,因为默认情况下会执行控制器http://my_app/portfoliosindex操作。然后,您显示一个特定的投资组合,http://my_app/portfolios/1该投资组合将向您显示带有idof的投资组合1config/routes.rb因此,请准备好在您的文件中创建和维护大量自定义路由。对于具有相同名称的事物,无论是复数还是单数,您都会看到类似的问题,例如equipment您可以拥有一件设备或多件设备。参见:rails link path and routing error when model 单复数名称相同(例如设备、物种)。它不仅使您的路线变得不稳定,而且还会在方法中引起冲突,portfolio_path例如portfolio_url.

于 2014-01-13T02:59:43.873 回答