Ich habe eine RoR-Objektgrafik, die ich speichere. Benutzer hat eine Liste von Abschnitten. Wenn eine Anfrage eingeht, lösche ich alle aktuellen Benutzerbereiche und befülle sie mit neuen.RoR Absturz beim Speichern "Sie haben ein Null-Objekt und Sie haben es nicht erwartet"
def set_current
@courses = params[:courses]
user = current_user
user.points = params[:points].nil? ? user.points : params[:points].to_i
UserSection.delete(user.user_sections)
@courses.each do |c|
new_section = UserSection.new()
new_section.user = user
new_section.save
end
user.save
head :ok
end
, wenn ich sparen, bekomme ich diese:
NoMethodError (You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.new_record?):
app/controllers/schedule_controller.rb:32:in `set_current'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/1.8/webrick/server.rb:162:in `start'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/1.8/webrick/server.rb:95:in `start'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/1.8/webrick/server.rb:92:in `each'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/1.8/webrick/server.rb:92:in `start'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/1.8/webrick/server.rb:23:in `start'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/1.8/webrick/server.rb:82:in `start'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.6/bin/rdebug-ide:82
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.6/bin/rdebug-ide:19:in `load'
/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/ruby/jruby-1.5.1/bin/rdebug-ide:19
Gedanken auf, was auf eigentlich los? Das Speichern geschieht erfolgreich - macht es zur db und zu allem.
bearbeiten: die Ausnahme (schedule_controller.rb: 32) ist der Aufruf mit
Was ist in Zeile 32 des ScheduleControllers? – Zabba
Was passiert, wenn der Benutzer keine user_sections hat? Es scheint, dass Sie auf null user_sections überprüfen müssen. – mossplix
@zabba es ist der Aufruf an user.save – kolosy