有很多關於這個問題的問題,「如何訪問CURRENT_USER模型」,我嘗試了一些,並最終做了「老辦法」,設置問題模型訪問CURRENT_USER
cattr_accessor :current_user
在
我FeedObserver,並設置
FeedObserver.current_user = current_user
在我ApplicationController中用的before_filter。
不幸的是,它似乎沒有按預期工作,有時在FeedObserver中使用了不同的用戶。
我使用rails 3.2.2,ruby 1.9.3p0,nginx,獨角獸。我無法真正解釋這種行爲,因爲 before_filter應該爲每個請求設置current_user,並且不應該被其他用戶覆蓋...?
class FeedObserver < ActiveRecord::Observer
cattr_accessor :current_user
observe :account, :user
def after_create(ressource)
log!(ressource)
end
def log!(ressource, event_name)
feed_item = FeedItem.new(
user: current_user,
data: ressource.changes,
account_id: current_user.account.id
)
feed_item.save if feed_item.valid?
end
end
是的,我檢查了代碼,並使用了「線程方法」。這很好,但我需要知道爲什麼我的代碼不工作,也許這種方法會發生同樣的問題。 (也需要設置更多,然後只是current_user) – fluxsaas 2012-03-15 20:03:02