我有一个复选框,如果选中该复选框,则可以创建我的名为 Engineer 的子资源。我正在尝试通过我的模型创建它,因为那是我可以调用该after_save
方法的地方。
这是我的代码:
模型/用户.rb
class User < ActiveRecord::Base
has_many :armies
has_many :engineers
end
模型/军队.rb
class Army < ActiveRecord::Base
has_many :engineers
attr_reader :siege
after_save :if_siege
private
def if_siege
if self.siege
Engineer.create!( :user_id => current_user.id, :army_id => self.id )
end
end
end
模型/工程师.rb
class Engineer < ActiveRecord::Base
belongs_to :user
belongs_to :army
end
控制器/armies_controller.rb
def new
@army = Army.new
end
def create
@army = current_user.armies.build(params[:army])
if @army.save
redirect_to new_army_path
else
render :new
end
end
end
if_siege
尽管对于我的方法,这给了我一个错误:
undefined local variable or method `current_user'
我该如何解决这个问题,或者有其他方法可以做到这一点吗?不确定这是否应该放入控制器或模型中,但我只能将其放入模型中。
谢谢。