2013-08-02 31 views
0

我有一個Log模型,它記錄了對Foo模型完成的一些操作。這意味着,每次創建或更新Foo實例時,都必須爲其表創建一個新的Log實例來註冊相應的操作。這個創作屬於哪裏?爲了Foo的模型還是爲了Foo的控制器?Rails 3:在模型或控制器中註冊日誌?

我在想,在模型中我可以使用before_save方法,這將保持我的控制器瘦,但我不知道是否是正確的把那個邏輯。謝謝

回答

1

日誌可以在任何地方使用,這取決於你需要把它們放在正確的地方。

對於這種情況,您的日誌記錄似乎與模型更改有關,但與HTTP請求無關,我認爲更好的選項是與模型相關的位置。

選項1:after_saveafter_update回調,而不是before_save。 (您只想在更改已生效後記錄它)

選項2:模型觀察者。

我自己在這種情況下更喜歡Observer,因爲Log不是這個模型裏面的東西,所以最好不要使用模型回調。觀察者也允許你稍後添加更多的東西。缺點是觀察員很容易被忘記,如果你能克服它,這不是一件大事。

+0

這就是我一直在尋找的東西。謝謝 – Jcao02