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

Ruby on rails 在Rails应用程序中放置报告功能的位置,ruby-on-rails,Ruby On Rails,我的rails应用程序需要有一个管理员生成报告的半扩展功能。它是一个音乐会的在线售票系统,报告范围从查看所有用户的列表到查看特定演出/场馆的具体会计详细信息等 应用程序中是否有此代码应放置的特定位置?例如,我应该有一个报告,它显示所有用户只需使用某些参数调用users#index方法。这对于一个简单的报告来说很好,但是对于更复杂的会计报告呢?他们是否应该拥有自己的控制器?您可能希望将一些逻辑抽象为模块,并将它们存储在app/lib/modules中。这些模块可以调用应用程序中的模型/控制器,并以

我的rails应用程序需要有一个管理员生成报告的半扩展功能。它是一个音乐会的在线售票系统,报告范围从查看所有用户的列表到查看特定演出/场馆的具体会计详细信息等


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

您可能希望将一些逻辑抽象为模块,并将它们存储在
app/lib/modules
中。这些模块可以调用应用程序中的模型/控制器,并以您希望的任何方式操作数据。以这种方式构建应用程序可以将报告等问题排除在主应用程序逻辑(即销售门票)之外。我已经用模块实现了这一点,当您需要调用该模块时,您可以使用以下语法:
ModuleName::ClassName::class_method

您应该关注的不仅仅是报告功能,而是任何应按角色划分的功能

我的方法是按角色命名控制器的名称空间,因此我的
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
通过这种方法,普通用户将被路由到
ShowsController
venuescocontroller
,而管理员用户则被路由到
admin::ShowsController
admin::venuescocontroller
。使用partials来消除两个角色都应该看到的视图

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