有很多关于这个问题的问题,“如何访问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