【发布时间】:2012-05-15 11:48:47
【问题描述】:
我是 Rails 新手,对如何最好地路由我的特定应用程序有疑问。我正在使用旧数据库,因此架构已经设置好并且使事情变得有点复杂。该应用程序的布局包括一个顶部导航栏,其中包含“用户”,然后对于特定的“用户”,还有另一个导航栏来显示/编辑各种表单。例如,一旦查询到特定的“用户”,“一般信息”和“帐户信息”等就会有单独的表格。
我现在的设置是有一个“用户”命名空间来对应顶级导航,并且在命名空间中有第二级导航:“一般”、“项目”等。通过这个设置,每个表单都被选中从第二级导航有自己的控制器,这似乎有点奇怪。
namespace :users do
resources :general, :project
end
这允许我拥有以下网址,其中 :id 属于“用户”
/users/general/:id
/users/general/:id/edit
/users/account/:id
/users/account/:id/edit
这看起来是否合理,或者是否有人对如何以 RESTful 方式处理嵌套导航设置有任何其他想法?遗留数据库很复杂,因为我没有“通用”、“帐户”模型或数据库表。对于每个表单,我需要从与“用户”模型关联的几个模型/表中提取。有一个“通用”控制器而没有一个“通用”模型似乎并不像我所困扰的那样。
【问题讨论】:
-
这是在黑暗中拍摄的,但是您是否考虑过创建一个“通用”模型(不是 ActiveRecord::Base 的子类)来在“通用”属性时管理各种基础表上的操作是 CRUDed 吗?底层表都可以从 ActiveRecord::Base 继承来管理持久性,通用模型会操纵它们来维护数据库中的记录。然后,您的通用控制器或多或少地将通用类的实例视为 AR 模型,但是当您对其进行 CRUD 时,模型逻辑会启动并管理数据库中实际发生的事情。
标签: ruby-on-rails ruby-on-rails-3 rest routes