Я пытаюсь создать Инженера с помощью флажка в форме армии, но он не создается. Название этого маркера siege
и является частью моей Army
модели:Создание связанного ресурса по флажку
модели/army.rb
class Army < ActiveRecord::Base
attr_accessible :siege
attr_reader :siege
validates_inclusion_of :siege, :in => [true, false]
has_many :engineers
def siege=(string_value)
@siege = (string_value == '1')
end
end
модели/engineer.rb
class Engineer < ActiveRecord::Base
belongs_to :user
belongs_to :army
end
армии/new.html.erb
<%= form_for @army do |f| %>
<%= f.check_box :siege %>
<%= f.submit "Create 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
модели/army_observer.rb
class ArmyObserver < ActiveRecord::Observer
def after_save(army)
if army.siege
Engineer.new({ :user_id => current_user.id, :army_id => :army_id })
end
end
end
Армия получает создан, но инженер не делает. Что нужно изменить в моем коде, чтобы это сделать?
что-то еще, потому что я избавился от 'если army.siege' и попробовал оба из них, и он до сих пор не получает создан. Я также попытался сделать «attr_accessible: army_id», но ничего хорошего. – LearningRoR
Вы проверили, является ли вызов, достигающий наблюдателя? – PriteshJ
Нет, похоже, это совсем не так. – LearningRoR