0

关于 rails 控制器的代码组织,我有一个相当简单的问题:

如果我们有一个应用商店平台(即 Google Play),它由开发人员(他们创建/上传应用程序)、管理员(审查和批准应用程序)和用户(通过商店使用应用程序)组成。

开发人员通过开发人员平台做所有事情,因此有一个开发人员命名空间来对相关项目进行分组是有意义的。同样的逻辑对管理员来说似乎是有意义的,在管理员命名空间下给他们一个管理面板。

现在问题来了 - 我有两个命名空间,Admin并且Developer- 如果开发人员可以将应用程序的状态从 :draft 更改为 :pending (供审核),并且管理员可以将状态从 pending 更改为 :approved/:rejected,那么推荐存储apps_controller.rb的地方?

似乎有三种方法可以处理这个问题,我不太确定哪种方法最“正确”,无论是出于实际原因还是传统原因。

我能想到的三个选项是:

1)在Admin&Developer命名空间中(并从 developer::apps 填充商店)?

2) 仅在Developers命名空间中

3) apps_controller 不应存在于任一命名空间中。

4

1 回答 1

0

不用担心,您在 OO 世界中。

两种设计:

  1. 制作一个通用的 AppsController 但没有路由到它。Admin 和 Developer 的应用程序控制器将继承这一点,并在必要时覆盖。

  2. 制作一个模块并将其包含在 Admin 的 AppsController 和 Developer 中,必要时覆盖。

如果没有详细的用例,很难说哪个更好,尽管我通常更喜欢#1。

于 2013-09-19T05:27:20.127 回答