有#2幾個類似的問題有關獲取CURRENT_USER形式的Rails 3名觀察員,但基本思路是一樣的:Rails 3的觀察員和CURRENT_USER
1)通過
CURRENT_USER的傳球attr_accessor :current_user
模型我們需要觀察。但是這對我來說是不可接受的,因爲我需要觀察10個模型(創建,更新,刪除動作),並且我不想在每個控制器的每個動作上傳遞這個。
2)將當前用戶存儲在線程中。完全不能接受。
那麼最佳實踐是什麼?而且,讓我們說,我想不僅在我的觀察員中獲得current_user,還要獲得IP地址?
任何想法?
這或多或少都會讓人皺起眉頭,所以出於這個原因,它實際上有點棘手,最後很可能不會覺得很優雅。 其中一個原因(多個)是說,例如你需要導入數據到你的rails程序。這需要現在訪問你的模型和相應的觀察者,但是如果你從命令行工作,那麼沒有當前用戶。所以現在你已經將應用程序限制爲只能在Web服務器後面工作,所以像海量數據導入一樣會很快變得痛苦。 如果需要,粘貼您的代碼,然後它可能會更容易幫助 – spotman
@spotman,感謝您的評論。基本上,我的代碼在這裏不會很有用,因爲它太籠統了。像'Item'(例如)與user_id的10個模型,可由其他用戶管理。這樣用id爲1的用戶可以編輯Itme.first.user_id(#=> 2)。我需要觀察者觀察一些東西,比如(User1更新由User2創建的Item1)。而且,是的,通過網絡服務器進行限制對我來說完全可以。 –
那麼你想用這些數據做什麼?如果你試圖做一些事情,比如發送電子郵件給做更新的人,如果你把它放在控制器中,通常會更容易維護,特別是當你試圖避免使用attr_accessor來設置類似updater_id的東西時,在觀察員閱讀。 – spotman