ruby-on-rails - 解决自动更新和手动覆盖之间的冲突

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

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

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

示例:

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

假设在您的数据源中有一个 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/

相关文章:

ruby-on-rails - 如何将 Google Analytics 结果合并到我的 Rails 3 应用程序中?

ruby-on-rails - 如何合并同一模型上两个查询的结果?

ruby-on-rails - 如何在单独的script.rb 中使用Rails 的Active Record?

ruby-on-rails - API 和 Rails - 最好的方法

ruby-on-rails - 如何比较ruby中的两个对象

ruby-on-rails - rails 4.2升级后性能超慢

ruby - ruby 中的快速/快速整数乘法?

ruby-on-rails - 无法构建 gem native 扩展 (mkmf (LoadError)) - Ubuntu 12.04

ruby - Spree 中的 NameError::Products#show

ruby-on-rails-3 - 如何通过rails控制台加载openssl?