我有一個複選框,如果選中,允許創建我的孩子資源稱爲工程師。我試圖通過我的模型創建它,因爲這是我可以調用after_save
方法的地方。未從父模型創建子項?
這裏是我的代碼:
型號/ user.rb
class User < ActiveRecord::Base
has_many :armies
has_many :engineers
end
型號/ army.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
型號/ engineer.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'
我怎樣才能解決這個問題或有另一種方式來做到這一點?不知道這是否應該在控制器或模型中進行,但我只能把這些放在模型中。
謝謝。
@jordanpg它的設計方法。 – LearningRoR 2012-08-09 01:05:41