我有一个使用日志系统的工作应用程序。然而,我的日志系统设计不合理,我正在寻找更优雅的解决方案。
我的“历史”模型包含以下字段id
message
和event
。只要有以下变化:
然后在History
表中创建记录此事件的记录。
目前,我在创建或更新event
模型时手动设置History
字段。有时这是在控制器中,有时在模型after_save
过滤器中,代码分散在我的应用程序中。
我正在寻找一种方法将event
字段的设置合并到History
模型中的方法。为此,我的History
模型会检测create
或update
来电的来源。
这可能吗?是否有更好的,更“轨道”的解决方案?
答案 0 :(得分:1)
IMO,这是做错的方法。
您目前要做的事情转化为
相反,您需要预先加载事件类型的捕获,即在数据更容易获取时捕获数据,而不是稍后进行sherlocking并稍后检测,如下所示:
我认为这与简单的Spearation of Concerns一致 - 理想情况下,对于调用它的历史模型并不重要 - 它应该能够自己保存历史记录并且调用方法应该提供所有必要的数据。