2012-08-28 50 views
2

這是一個複雜的抽象問題,所以請原諒我,如果它不夠詳細。解決自動更新和手動覆蓋之間的衝突

我遇到過無數次特定類型的問題:一方面,數據源用於定期更新某個數據結構的自動化方式,但另一方面,利益相關者希望成爲能夠手動覆蓋自動條目。

實施例:

你的產品,這是跟上最新(標題,描述等)由使用外部數據源(產品數據庫等一些自動化腳本列表)。

假設您的數據源中有烤麪包機「Freshtoast XYZ 300」,並且如果它的名稱更改爲「FreshToast!XYZ-300」,您希望將該更新傳播到您自己的(不同結構的)產品模型中。同時,如果同事不喜歡「Freshtoast XYZ 300」的名稱,並且想要將其更改爲「Freshtoast的Toaster XYZ 300」(手動),那麼您不希望重寫自動改變(他會生氣),但是你也不想簡單地忽略更新的名字,因爲如果同事知道這個改變,他會調整名字爲「Fresh Toast的烤麪包機XYZ-300!」。 。


什麼是「考慮」更新數據源的最佳方法 - 甚至被替代的數據 - 同時仍然允許手動操作? PS:我主要使用Ruby/Rails,但我想這個問題很普遍。另外,要清楚的是,自動更新是規則,而在這種情況下,手動覆蓋是例外。假設有200,000種產品每天都會更新,其中只有20種產品已經手動覆蓋標題。因此,例如,必須批准每一次更新都不是一種選擇。

回答

1

這裏不用什麼...

手拿開的方法:添加一個字符串列產品表中包含用戶觸摸列的序列名單。無論何時用戶觸摸產品表中的列,都將其放入序列化列表中。當自動更新器擊中該記錄時,它會檢查它應該忽略的列的列表。

手動綁定微管理器方法:使用版本庫(例如vestal_versions gem)並將user_id列添加到產品表中。任何時候用戶觸摸的記錄都會自動更新,向他們發送通知並允許他們查看之前/之後他們可以批准或拒絕。

+0

我同意2個最直觀的解決方案是選擇性地「阻止」自動更新或者有一個類似於Git等版本控制系統的複雜「合併」過程。我不喜歡前者是它不夠透明(有時我可能不想忽略自動更新);我不喜歡後者的原因是它可能需要相當複雜的前端和後端更改,看起來有點像矯枉過正。 –

+0

訣竅是找到合適的平衡點。你不想過度複雜化,但用戶應該對他們的控制水平感到滿意。 –

相關問題