2011-01-06 57 views
0

我有一個RoR對象圖,我正在保存。用戶有一個部分的列表。當請求進入時,我刪除所有當前用戶部分,並用新的部分重新填充。RoR碰撞保存「你有一個零對象,你沒有想到它」

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 

當我保存,我得到這個:

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 

思考什麼是真正回事?保存成功發生 - 使數據庫和一切。

編輯:異常(schedule_controller.rb:32)是user.save

+0

ScheduleController的第32行是什麼? – Zabba 2011-01-06 07:49:59

+0

當用戶沒有user_sections時會發生什麼?看來你需要檢查空的user_sections。 – mossplix 2011-01-06 08:10:11

回答

0

嘗試與更換第一線電話(如果這就是你的錯誤)

UserSection.delete(user.user_sections) if user.user_sections 

但就像Zabba所說的,代碼清單會很有幫助。

相關問題