解决自动更新和手动覆盖之间的冲突

时间:2012-08-28 09:47:55

标签: ruby-on-rails ruby ruby-on-rails-3

这是一个复杂而抽象的问题,请原谅我,如果它不够具体。

我多次遇到一种特定类型的问题:一方面,数据源用于定期以自动方式更新某个数据结构,但另一方面,利益相关者希望能够手动覆盖自动条目。

示例:

您有一个产品列表,这些产品通过一些使用外部数据源(产品数据库等)的自动化脚本保持最新(标题,描述等)。

假设您的数据源中有一个烤面包机“Freshtoast XYZ 300”,如果其名称更改为“FreshToast!XYZ-300”,您希望将该更新传播到您自己的(结构不同的)产品模型中。 / p>

同时,如果同事不喜欢名称“Freshtoast XYZ 300”并想要将其更改为“Freshtoast的Toaster XYZ 300”(手动),则您不希望覆盖该更改自动(他会生气),但你也不想简单地忽略更新的名字,因为如果同事知道这个改变,他会把名字调整为“FreshToast的Toaster XYZ-300!”。


“考虑”更新数据源的最佳方法是什么 - 即使对于被覆盖的数据 - 仍然允许手动覆盖?

PS:我主要使用Ruby / Rails,但我想这个问题很普遍。此外,需要明确的是,自动更新是规则,而手动覆盖是此方案中的例外。因此,假设每天有200,000个产品更新,其中只有20个产品手动覆盖了标题。因此,例如,不得不批准每一次更新。

1 个答案:

答案 0 :(得分:1)

这里什么都没有......

Hands off approach:将一个字符串列添加到products表,该表包含用户触摸列的序列化列表。只要用户触摸products表中的列,就将其放入序列化列表中。当自动更新程序命中该记录时,它会检查列表中是否应该忽略的列。

令人烦恼的微管理器方法:使用版本控制库(例如vestal_versions gem)并将user_id列添加到products表。每当用户触摸的记录自动更新时,向他们发送通知并允许他们查看他们可以批准或拒绝的前/后。