我該如何瞭解創建或其他操作是否從模型中調用。基本上我正在做數據庫日誌記錄,並希望跟蹤是否正在執行創建或其他操作。確定模型內正在調用哪個動作。 Ruby on Rails
對於做日誌記錄部分,我使用的是ActiveRecord::Observer的概念。但是我無法確定用戶是在創建還是在做其他事情。所以請告訴我一些軌道提供給我們以確定模型內部動作的方式。
在此先感謝。
我該如何瞭解創建或其他操作是否從模型中調用。基本上我正在做數據庫日誌記錄,並希望跟蹤是否正在執行創建或其他操作。確定模型內正在調用哪個動作。 Ruby on Rails
對於做日誌記錄部分,我使用的是ActiveRecord::Observer的概念。但是我無法確定用戶是在創建還是在做其他事情。所以請告訴我一些軌道提供給我們以確定模型內部動作的方式。
在此先感謝。
保存模型時,可以使用before_save觸發事件。要確定它是保存還是創建,您可以使用此方法new_record?,它會告訴您它是否是新實例。您還可以知道哪些屬性具有changed
在應用程序中調用哪個任何動作都存儲在params [:action]中,並且模型中不能訪問參數。 所以我不認爲你可以看到哪些動作被模型調用。
感謝,Anubhaw
從體系結構的角度來看,這不推薦使用,但這僅用於深層模型內的低級別日誌記錄,並且不會造成任何傷害。這也是線程安全的解決方案。
的ApplicationController或者只是單個控制器:
around_filter :store_remote_ip_in_thread
def store_remote_ip_in_thread
begin
Thread.current[:remote_ip] = request.remote_ip
yield
ensure
Thread.current.delete :remote_ip
end
end
檢索可重複使用的模塊:
module RemoteIpAware
def current_remote_ip
Thread.current[:remote_ip] || '-'
end
end
某處模型/郵件/ lib下類:
include RemoteIpAware
...
#use current_remote_ip method anywhere
請記住我寫的它從我的記憶..語法可能不行;) 在你的情況下廣告的遠程IP可以保存參數[:action]:控制器名稱等。
請不要這樣做。線程不是類似PHP的全局變量,不應該以那種方式使用。 – 2010-09-16 17:52:28
什麼是日誌記錄功能? – 2010-09-16 11:54:05