这是一个有点复杂、抽象的问题,如果不够具体,请原谅我。
我遇到过很多次特定类型的问题:一方面,数据源用于定期以自动方式更新特定数据结构,但另一方面,利益相关者希望能够手动覆盖自动条目。
示例:
您有一个产品列表,该列表通过一些使用外部数据源(产品数据库等)的自动化脚本保持最新(标题、描述等)。
假设在您的数据源中有一个 toastr “Freshtoast XYZ 300”,如果它的名称更改为“FreshToast!XYZ-300”,您希望将该更新传播到您自己的(不同结构的)产品模型中。
同时,如果同事不喜欢名称“Freshtoast XYZ 300”并想将其更改为“Freshtoast 的 Toaster XYZ 300”(手动),您不希望覆盖该更改自动(他会生气),但您也不想简单地忽略更新后的名称,因为如果同事知道此更改,他会将名称调整为“FreshToast 的 Toaster XYZ-300!”。
什么是“考虑”更新数据源的最佳方法 - 即使是覆盖数据 - 同时仍允许手动覆盖?
PS:我主要使用 Ruby/Rails,但我想这个问题很笼统。此外,需要明确的是,自动更新是规则,而手动覆盖是这种情况下的异常(exception)情况。因此,假设每天更新 200,000 种产品,其中只有 20 种具有手动覆盖的标题。因此,例如,必须批准每一个更新不是一种选择。
最佳答案
这里什么都没有...
Hands off 方法:向产品表添加一个字符串列,其中包含用户触摸列的序列化列表。每当用户触摸产品表中的列时,将其放入序列化列表中。当自动更新程序命中该记录时,它会检查列表中应该忽略的列。
手动微观管理器方法:使用版本控制库(例如 vestal_versions gem)并向产品表添加 user_id 列。每当用户触摸的记录自动更新时,向他们发送通知并允许他们查看他们可以批准或拒绝的之前/之后。
关于ruby-on-rails - 解决自动更新和手动覆盖之间的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12156701/