【问题标题】:Organizing rails controllers within namespaces在命名空间内组织 Rails 控制器
【发布时间】:2013-09-19 05:20:08
【问题描述】:

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

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

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

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

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

我能想到的三个选项是:

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

2) 仅在Developers 命名空间中

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

【问题讨论】:

    标签: ruby-on-rails ruby namespaces ruby-on-rails-4


    【解决方案1】:

    别担心,你在 OO 世界里。

    两种设计:

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

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

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

    【讨论】:

    • 感谢您的回复。是的,#1 听起来像是一种合理的方法。但是,Developers::AppsController 当前继承自 Developer::BaseController(为了继承授权设置等)——在这种情况下,最好使用 #2,或者我可以做些什么?
    • 是的,那么 #2 在这种情况下就可以了。
    猜你喜欢
    • 2017-02-27
    • 2014-05-19
    • 2023-03-11
    • 2013-02-09
    • 2012-07-08
    • 2012-05-19
    • 1970-01-01
    • 2012-03-07
    • 2017-01-18
    相关资源
    最近更新 更多