我有一个带有管理界面的 Rails 应用程序,允许用户对某些模型进行 CRUD 操作。客户想要一种方法来记录用户对每个模型做了什么。例如,用户删除客户等。他想跟踪谁删除/更新/创建了该客户。我正在考虑处理这个问题的最佳方法。我也很好奇那里是否有一颗已经这样做的宝石。
这是我的想法。
- 我可以在每个模型中有一个 created_by 和 updated_by 字段。问题是跟踪deleted_by。一种方法是将客户标记为非活动状态,而不是删除实际记录。看起来很麻烦,而且我要跟踪的每个模型都会有很多重复。
我可以创建一个 event_history 模型来跟踪以下字段(下面的类图)。model_record_data 字段可以存储为数组或对象吗?您可以将对象作为文本存储在 mysql 字段中吗?对我来说,这种方法的好处是我可以调用这个模型并存储我将来创建的任何模型的动作。此外,如果有人犯了错误,我可以将记录恢复到以前的状态。
event_history -> model_name model_record_data action #create/update/delete etc action_date #datetime user_id
我将不胜感激对此的一些反馈,我们将不胜感激。