我的rails应用程序需要具有半广泛的能力,以便管理员生成报告。这是一个音乐会的在线售票系统,报告的范围从查看所有用户的列表到查看某些节目/场地/等的特定会计细节。
应用程序中是否有特定位置应放置此代码?例如,我是否应该有一个报告,显示所有用户只需使用某些参数调用Users#index方法。这适用于简单的报告,但更复杂的会计报告呢?他们应该有自己的控制器吗?
答案 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
使用此方法,普通用户将路由到ShowsController
和VenuesController
,而管理员用户则路由到Admin::ShowsController
和Admin::VenuesController
。使用partials来干掉两个角色都应该看到的视图。
使用这种方法,您不需要条件来检查管理员或普通用户是否正在访问您的控制器/视图。