Rails用于检测呼叫发起位置的模型逻辑

时间:2014-11-18 18:09:08

标签: ruby-on-rails-4 filter model

我有一个使用日志系统的工作应用程序。然而,我的日志系统设计不合理,我正在寻找更优雅的解决方案。

我的“历史”模型包含以下字段id messageevent。只要有以下变化:

  • 添加或编辑评论
  • 添加或编辑任务
  • 添加或 编辑联系人

然后在History表中创建记录此事件的记录。

目前,我在创建或更新event模型时手动设置History字段。有时这是在控制器中,有时在模型after_save过滤器中,代码分散在我的应用程序中。

我正在寻找一种方法将event字段的设置合并到History模型中的方法。为此,我的History模型会检测createupdate来电的来源。

这可能吗?是否有更好的,更“轨道”的解决方案?

1 个答案:

答案 0 :(得分:1)

IMO,这是做错的方法。

您目前要做的事情转化为

  1. 事件发生
  2. 即将录制唱片(1)
  3. 正在处理(2)时,您可以找出(2)的调用源自
  4. 的位置

    相反,您需要预先加载事件类型的捕获,即在数据更容易获取时捕获数据,而不是稍后进行sherlocking并稍后检测,如下所示:

    1. 事件发生
    2. 进行记录记录(1),并在其中为事件传递额外参数
    3. 现在你只是保存它。
    4. 我认为这与简单的Spearation of Concerns一致 - 理想情况下,对于调用它的历史模型并不重要 - 它应该能够自己保存历史记录并且调用方法应该提供所有必要的数据。