4

用户控制器之所以命名为 UsersController,原因很简单,因为它控制多个用户,但实际上它不是只更改特定用户的几个参数吗?

因此,对我来说最合乎逻辑的事情是控制器名称 Dashboard 应该命名为 DashboardsController 因为它控制多个 PC 上的多个 Dashboards 并且由于在呈现页面后某些特定字段的微小变化,因此它应该被命名仪表板。就像用户被命名为用户而不是用户......

这让我回到了起点。我如何决定选择什么;复数还是单数?仪表板只是应用程序中的一个特定事物,而用户并不仅仅控制他们自己的东西,但是当用户名在页面上呈现时,仪表板都是不同的,以及特定的用户喜欢的标签。

最好的做法是什么?

4

3 回答 3

3

我倾向于将演示者模式用于仪表板。仪表板是对象的混合体,很难将其视为显示或索引页面。我将创建一个虚拟对象来处理关联对象的查询和聚合。它确实清理了控制器代码,即使您决定使用 DashboardsController。

但是,我建议在路由中添加 resources.users。

collection do 
  get :dashboard
end

然后在 UsersController 下添加一个操作仪表板

def dashboard
  @presenter = UserDashboardPresenter.new(user)
end

在视图中使用@presenter。

如果你搜索它,你会发现更多关于演示者模式的信息。它非常适合缓存、代码重用、测试和性能增强。

于 2013-01-25T23:42:22.990 回答
2

rails 约定是使用复数定义控制器名称(例如/dashboards)。这不是一成不变的,您可以根据自己的需要进行更改,但是如果您询问最佳实践是什么,那么最好的选择是坚持使用 rails 约定,特别是如果您刚刚开始带导轨。它会让你的生活变得更简单。

如果你真的想为你的控制器使用一个单数术语(例如 /dashboard),你可以在你的 routes.rb 文件中指定它(这假设你正在使用 RESTful 路由并将仪表板定义为资源)

resource :dashboard, :controller => 'dashboard'

另请注意,如果您决定使用单数,则需要相应地调整 rails 为 RESTful 路由创建的辅助方法,所以

  dashboards_path # will no longer work, you must use
  dashboard_path 
于 2013-01-25T23:41:58.867 回答
1

为控制器使用复数名称只是 Rails 约定之一。你应该偏离约定吗?我认为如果你坚持下去会更好。

正如您提到的用户,复数名称通常听起来更自然。我确信您的 DashboardsController 将有多个操作,因此它可以追溯到多元化的概念。

我的建议坚持复数惯例。

于 2013-01-25T23:42:07.883 回答