1
我已經看了幾個有關使用current_user
作爲觀察者的問題,並試圖實現一個人說的,但它不工作(see here)。Observer的未定義局部變量或方法`current_user'?
我試圖創建一個由我的觀察員當複選框被標記爲真正的工程師。工程師和軍隊屬於用戶:
型號/ user.rb
class User < ActiveRecord::Base
cattr_accessor :current
has_many :armies
has_many :engineers
end
控制器/ application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_time_zone, :set_current_user
private
def set_current_user
User.current = current_user
end
end
型號/ army_observer.rb
class ArmyObserver < ActiveRecord::Observer
def after_save(army)
if army.siege
Engineer.create({ :user_id => current_user.id, :army_id => :army_id })
end
end
end
有了這個代碼,它給我的錯誤:
undefined local variable or method `current_user' for #<ArmyObserver:0x4e68970>
任何其他方式?也許它與Devise current_user方法衝突?也許最好把current_user
保存在控制器中?如果是的話,我會怎麼做?
感謝一個新手學習仍然。