Есть много вопросов относительно этой проблемы, «как получить доступ к current_user в модели», я попробовал некоторые из них и в итоге сделал «старый способ», установив
cattr_accessor :current_user
в моем FeedObserver и установите
FeedObserver.current_user = current_user
в моем ApplicationController с before_filter.
К сожалению, похоже, что он не работает должным образом, и иногда в FeedObserver используется другой пользователь.
Я использую рельсы 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