2

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

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

例子:

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

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

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


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

PS:我主要使用Ruby / Rails,但我想这个问题很笼统。此外,需要明确的是,自动更新是规则,而手动覆盖是这种情况下的例外。因此,假设每天更新 200,000 个产品,其中只有 20 个具有手动覆盖的标题。因此,例如,必须批准每一个更新不是一种选择。

4

1 回答 1

1

Here goes nothing...

Hands off approach: Add a string column to products table that contains a serialized list of user-touched columns. Anytime a user touches a column in the products table, put it in the serialized list. When the automatic updater hits that record it checks the list for columns it should ignore.

Hand-wringing micro-manager approach: Use a versioning library (e.g. vestal_versions gem) and add a user_id column to the products table. Anytime a user-touched record is automatically updated, send them a notification and allow them to view a before/after which they can approve or reject.

于 2012-08-28T17:57:35.937 回答