1

我有一个非常复杂的 Rails 应用程序,基于用户角色的“层”很少:

  1. 管理层
  2. 标签层
  3. 带层
  4. 扇层

每个层/命名空间都有一些不同的布局和渲染选项。这些差异是如此之大,以至于我需要将它们中的每一个都强烈分开。

我可以使用路由命名空间并将每一层放在适当的 url 命名空间下,即/admin, /label, /band/fan但我不希望它在前端(在 url 中)和基于路由的情况下可见。但是,我希望在这个解决方案中能够将每个应用程序部分的控制器、模型和视图分离到层子文件夹中。

适当的层可以由 current_user 角色确定,因此如果我能够手动设置所需的命名空间application_controller而不是使用路径模式,那就太棒了。

这样的事情可能吗?

4

1 回答 1

1

1)

这是一个范围和角色的示例(使用warden gem)

scope module: lambda { |request| request.env['warden'].user.role } do
 resources :posts, :comments
end

有关路由的更多信息:Rails 路由

本示例不处理用户未登录和模块不存在的情况。我不知道这是否是正确的道路,但它是一个解决方案。

2)

我的第二个想法是不通过不同的模块进行路由,而是使用展览策略模式

我喜欢这个想法的地方在于它更多的是面向对象的,但可能更少的是“Rails 方式”

于 2013-10-26T18:16:19.090 回答