我已经查看了几个关于使用current_user
观察者的问题,并试图实现一个人所说的但它不起作用(见这里)。
当复选框标记为 true 时,我正在尝试由我的观察者创建一个工程师。工程师和军队属于用户:
模型/用户.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>
还有什么办法吗?也许它与设计 current_user 方法冲突?也许最好将其保留current_user
在控制器中?如果是这样,我会怎么做?
感谢刚刚学习的新手。