![]() |
1
5
我立刻想到的是:将代码移动到模型中。 目标应该是“瘦控制器”,因此它们不应该包含业务逻辑。 第二,我喜欢将我的报告行作为openstruct()对象呈现给我的视图,这对我来说更清晰。 因此,我考虑将这个累积逻辑转移到(最有可能的)报表上的类方法中,并返回一个“报告行”openstruct数组和一个totals openstruct传递给我的视图。 我的控制器代码会变成这样:
编辑:(一天后) 看着把积累添加到数组中,我想到了:
看,考试!它似乎工作正常。没有检查两个数组之间的大小差异,因此有很多方法可能出错,但这个概念似乎足够合理。我正在考虑尝试类似的方法,让我获取一个ActiveRecord结果集并将其累积到一个Openstruct中,这是我在报告中经常使用的方法… 我们的新数组方法可能会将原始代码减少到如下所示:
…如果报告“发票”和“交货”报告的数据也可以计算
完全未经测试,但这对于向数组中添加一行方法和在模型中执行单个额外减法来说是一个极大的减少。 |
![]() |
2
2
创建一个包含所有这些字段的求和对象,将整个数组传递给@sum.increment_sums(report.data_of…) |
![]() |
cluster1 · 采取独立的新行动的好处是什么? 5 月前 |
![]() |
Robert · 使用JSON或哈希时,将NULL替换为NIL 5 月前 |
![]() |
Fred Willmore · Rails控制器不呈现任何模板 12 月前 |
![]() |
Diogo Amaral · 实现API请求的正确方式 12 月前 |
![]() |
Meknassih · 在控制器方法中分配给模型没有任何作用 1 年前 |
![]() |
Michael Ding · Rails上的默认会话到期问题 1 年前 |
|
Flávio · 基于另外两个生成数组 1 年前 |