0

我有一个 Log 模型,它注册了对 Foo 模型执行的一些操作。这意味着,每次我创建或更新一个 Foo 实例时,我都必须为其表创建一个新的 Log 实例来注册相应的操作。这个创作属于哪里?对 Foo 的模型还是对 Foo 的控制器?

我在想,在模型中我可以使用 before_save 方法,这会使我的控制器变瘦,但我不确定将逻辑放在那里是否正确。谢谢

4

1 回答 1

1

日志可以在任何地方使用,这取决于您需要将它们放在正确的位置。

对于这种情况,您的日志记录似乎与模型更改有关,但与 HTTP 请求无关,我认为更好的选择是与模型相关的地方。

选项 1:after_saveafter_update回调,而不是before_save. (您只想在更改已经生效后记录它)

选项 2:模型观察者。

在这种情况下,我自己更喜欢 Observer,因为 Log 不是这个模型中的东西,所以最好不要使用模型回调。观察者还允许您稍后更轻松地添加更多内容。缺点是观察者很容易被遗忘,如果你能克服它,这没什么大不了的。

于 2013-08-02T16:26:52.773 回答