![]() |
1
5
我立刻想到的是:将代码移动到模型中。 目标应该是“瘦控制器”,因此它们不应该包含业务逻辑。 第二,我喜欢将我的报告行作为openstruct()对象呈现给我的视图,这对我来说更清晰。 因此,我考虑将这个累积逻辑转移到(最有可能的)报表上的类方法中,并返回一个“报告行”openstruct数组和一个totals openstruct传递给我的视图。 我的控制器代码会变成这样:
编辑:(一天后) 看着把积累添加到数组中,我想到了:
看,考试!它似乎工作正常。没有检查两个数组之间的大小差异,因此有很多方法可能出错,但这个概念似乎足够合理。我正在考虑尝试类似的方法,让我获取一个ActiveRecord结果集并将其累积到一个Openstruct中,这是我在报告中经常使用的方法… 我们的新数组方法可能会将原始代码减少到如下所示:
…如果报告“发票”和“交货”报告的数据也可以计算
完全未经测试,但这对于向数组中添加一行方法和在模型中执行单个额外减法来说是一个极大的减少。 |
![]() |
2
2
创建一个包含所有这些字段的求和对象,将整个数组传递给@sum.increment_sums(report.data_of…) |
![]() |
Stilian · 存储库设置中没有Github页面部分 3 年前 |
![]() |
Kellen · 查看$卷展栏功能列表 3 年前 |
![]() |
Akshit Thakur Ak · 我怎样才能把铁轨停下来? 3 年前 |
![]() |
johncssjs · 将数组转换为每个元素的嵌套哈希 3 年前 |
![]() |
solidsnake99 · Rails db:如何绕过验证 3 年前 |