在Rails应用程序中放置报告功能的位置

时间:2015-05-01 03:37:09

标签: ruby-on-rails

我的rails应用程序需要具有半广泛的能力,以便管理员生成报告。这是一个音乐会的在线售票系统,报告的范围从查看所有用户的列表到查看某些节目/场地/等的特定会计细节。

应用程序中是否有特定位置应放置此代码?例如,我是否应该有一个报告,显示所有用户只需使用某些参数调用Users#index方法。这适用于简单的报告,但更复杂的会计报告呢?他们应该有自己的控制器吗?

2 个答案:

答案 0 :(得分:0)

您可能希望将一些逻辑抽象为模块,并将它们存储在myObjectClass.m中。这些模块可以调用应用程序中的模型/控制器,并以您希望的任何方式操作数据。以这种方式构建您的应用程序可以避免在主应用程序逻辑(即销售票证)之外进行报告等问题。我已经使用模块完成了这项工作,您可以在需要调用该模块时使用以下语法执行此操作:app/lib/modules

答案 1 :(得分:0)

它不仅仅是报告您应该关注的功能 - 它应该按角色分隔任何功能。

我的方法是按角色命名控制器,所以我的routes.rb看起来如下所示:

# admin will access /admin/reports/users, etc. 
namespace admin
  resource :reports do
    get :users, on: :collection
    resource :shows do
      get :accounts, on: :member
    end
    resource :venues
  end
end

# normal users will access /shows, etc
resource :shows
resource :venues

使用此方法,普通用户将路由到ShowsControllerVenuesController,而管理员用户则路由到Admin::ShowsControllerAdmin::VenuesController。使用partials来干掉两个角色都应该看到的视图。

使用这种方法,您不需要条件来检查管理员或普通用户是否正在访问您的控制器/视图。