我有一个 Log 模型,它注册了对 Foo 模型执行的一些操作。这意味着,每次我创建或更新一个 Foo 实例时,我都必须为其表创建一个新的 Log 实例来注册相应的操作。这个创作属于哪里?对 Foo 的模型还是对 Foo 的控制器?
我在想,在模型中我可以使用 before_save 方法,这会使我的控制器变瘦,但我不确定将逻辑放在那里是否正确。谢谢
我有一个 Log 模型,它注册了对 Foo 模型执行的一些操作。这意味着,每次我创建或更新一个 Foo 实例时,我都必须为其表创建一个新的 Log 实例来注册相应的操作。这个创作属于哪里?对 Foo 的模型还是对 Foo 的控制器?
我在想,在模型中我可以使用 before_save 方法,这会使我的控制器变瘦,但我不确定将逻辑放在那里是否正确。谢谢
日志可以在任何地方使用,这取决于您需要将它们放在正确的位置。
对于这种情况,您的日志记录似乎与模型更改有关,但与 HTTP 请求无关,我认为更好的选择是与模型相关的地方。
选项 1:after_save
和after_update
回调,而不是before_save
. (您只想在更改已经生效后记录它)
选项 2:模型观察者。
在这种情况下,我自己更喜欢 Observer,因为 Log 不是这个模型中的东西,所以最好不要使用模型回调。观察者还允许您稍后更轻松地添加更多内容。缺点是观察者很容易被遗忘,如果你能克服它,这没什么大不了的。