【发布时间】:2016-11-16 18:40:51
【问题描述】:
我正在使用我创建的服务对象计算游戏玩家的每周排行榜统计数据。我的情况是,如果我想重做任何特定周的计算,我想删除旧的统计数据,当且仅当新的统计数据保存成功。
大概是我的步骤:
- AR 将给定周的现有统计信息查询到变量中
- 运行该周的新统计数据
- 保存新数据,如果保存成功则返回
- 成功保存新数据后,从步骤 1 中查询的 mysql 中删除对象。
我已经尝试使用@old_data.delete_all 方法,但此时只会从 mysql 的 ActiveRecord_Relation 对象运行查询,同时也会破坏新创建的数据。我只想销毁在创建新数据之前从查询中保存的那些。
可能的解决方案我没有尝试过:Sorta hacky,但是通过使用任意值更新旧数据查询中所有对象的任意列来标记旧数据,并使用查询中的delete_all 来获取该任意值.. . 这听起来不像是轨道式的做事方式,而且,它增加了一个额外的查询。
【问题讨论】:
标签: mysql ruby-on-rails ruby ruby-on-rails-4 activerecord