Ruby on rails 设计报表控制器Rails

Ruby on rails 设计报表控制器Rails,ruby-on-rails,Ruby On Rails,我正在为报表设计一个控制器。将有大约10份不同的报告,例如: 分配的课程 指定课程 登录 ……等等 我是否应该创建一个控制器“报告”,其URL如下: /报告/课程分配?课程=abc和开始日期=2001-01-01和结束日期=2011-01-01 /报告/课程分配?课程=abc和开始日期=2001-01-01和结束日期=2011-01-01 还有一些ajax操作将返回数据,例如按类别获取课程。(这个ajax操作是否应该有自己的方法,因为它与报告有关,还是应该是courses controlle

我正在为报表设计一个控制器。将有大约10份不同的报告,例如:

  • 分配的课程
  • 指定课程
  • 登录 ……等等
我是否应该创建一个控制器“报告”,其URL如下:

/报告/课程分配?课程=abc和开始日期=2001-01-01和结束日期=2011-01-01 /报告/课程分配?课程=abc和开始日期=2001-01-01和结束日期=2011-01-01

还有一些ajax操作将返回数据,例如按类别获取课程。(这个ajax操作是否应该有自己的方法,因为它与报告有关,还是应该是courses controller的一部分)


我只是在寻找关于如何设计一个报告系统的建议,该系统主要是复杂的sql查询,这些查询生成高图(Ajax加载的数据)和表格数据中的图形。

报告很烦人,请记住,您应该尽可能少地花时间在它上面。我建议使用for使您的模型更易于查询,它将节省您从
查询字符串->sql查询中编写所有管道的时间

另一件值得考虑的事情是,您的查询根很可能是作用域,因此如果您有(例如):

这将(可能)映射到
课程分配


你可以有一个报表控制器,这样做当然没有错,但我个人喜欢围绕我现有的控制器来模拟我的报表。

报表很烦人,记住,你应该尽可能少地花时间在它上面。我建议使用for使您的模型更易于查询,它将节省您从
查询字符串->sql查询中编写所有管道的时间

另一件值得考虑的事情是,您的查询根很可能是作用域,因此如果您有(例如):

这将(可能)映射到
课程分配


你可以有一个报表管理员,这样做肯定没有错,但我个人喜欢围绕我现有的控制器对我的报告进行建模。

我也一直在思考这个问题,并得出结论,对于报告与多个模型关联但遵循类似模式的情况,报告控制器和
lib
中的通用代码可能是有意义的。报告的需求对其自身来说比对其所依赖的模型来说更为常见,例如:排序、搜索、筛选,然后绘制图表、导出到文件、权限等

我的基本原理是,在设计应用程序时,您应该将其视为API,即使您不是这样使用它的。好的API是一致的和可预测的,实际上这就是控制器所提供的。简单的RESTful CRUD操作(一般来说)属于与模型关联的控制器


报告是不同的,部分原因是它倾向于跨模型,部分原因是有不同的模式,并且可能随着时间的推移而增长。例如,我们有一份针对业务合作伙伴的报告,将付款、用户帐户和产品集中在一份报告中;其他报告提供了跨多个模型的度量汇总。报告是它自己的事情。

我也一直在思考这个问题,并得出结论,对于报告与多个模型关联但遵循类似模式的情况,报告控制器和
lib
中的通用代码是有意义的。报告的需求对其自身来说比对其所依赖的模型来说更为常见,例如:排序、搜索、筛选,然后绘制图表、导出到文件、权限等

我的基本原理是,在设计应用程序时,您应该将其视为API,即使您不是这样使用它的。好的API是一致的和可预测的,实际上这就是控制器所提供的。简单的RESTful CRUD操作(一般来说)属于与模型关联的控制器


报告是不同的,部分原因是它倾向于跨模型,部分原因是有不同的模式,并且可能随着时间的推移而增长。例如,我们有一份针对业务合作伙伴的报告,将付款、用户帐户和产品集中在一份报告中;其他报告提供了跨多个模型的度量汇总。报道是它自己的事情。

谢谢你的回答。看来searchlogic与rails 3不兼容(我忘了提到我使用的是rails 3)。你还有其他想法吗?我还没试过,不过也许可以看看谢谢你的回答。看来searchlogic与rails 3不兼容(我忘了提到我使用的是rails 3)。你还有其他想法吗?我没试过,但也许看看
/courses/allocated