【发布时间】:2014-05-06 05:40:43
【问题描述】:
我有下表:
event_id value created_at updated_at
1 15.2 2014/01/01 00:00 2014/01/01 00:00
2 15.5 2014/01/01 00:10 2014/01/01 00:10
3 15.9 2014/01/01 00:20 2014/01/01 00:20
但是,如果一个新事件与前一个事件具有相同的值(如在最新的时间),那么前一个事件应该将“updated_at”设置为当前时间,并且不应创建新事件。
在上面的示例中,如果我执行 Event.new(:value => 15.9),则 ID 为 3 的 Event 应将其 updated_at 设置为当前时间 - 这应该是唯一的更改。
关于如何完成此任务的任何建议?我曾尝试摆弄 Active Record 回调,但在中止创建(使用回滚)时失败。当然可以使用特殊的“构造函数”方法来解决,但我想避免这种情况。
【问题讨论】:
-
Google for
find_or_create_by
标签: ruby-on-rails ruby activerecord