【发布时间】:2012-05-04 04:11:59
【问题描述】:
我正在开发一个带有后台 (admin) 的应用程序,该应用程序仅限于某些用户使用,以便修改内容。另一方面,我有一个可供客户端访问的网络服务 (api)。
所以我在命名空间中分离了这两个部分,并且我意识到当我将脚手架用于诸如问题之类的资源时,生成的控制器假定资源是 admin::questions,但是那不是我想要的。
我希望有:
/admin/questions to handle my questions (controller admin/questions_controller.rb)
/api/questions to serve my questions (controller api/questions_controller.rb)
但在这两种情况下,它是相同的模型。
我应该继续在路由中使用命名空间还是使用模块? 这是否违背了 Rails 资源的理念?
感谢您的意见。
【问题讨论】:
-
通常使用命名空间的原因是完全按照脚手架 id 生成的方式进行操作。也就是说,您想要为 GUI 和 API 使用不同的控制器。考虑一下,如果您有不同的控制器,您将没有清洁的 respond_to(并且可能能够取出 respond_to)。
-
这并不是说你的做法是错误的。 respond_to 就是为了这样一个目的。
标签: ruby-on-rails resources namespaces routes