Search This Blog

Friday, August 12, 2011

NoMethodError (undefined method `eq' for nil:NilClass):

Context: Rails 3 app
Problem: when trying to save! an instance of the join model in a has_many :through I was getting the following error:

NoMethodError (undefined method `eq' for nil:NilClass):
  app/models/user.rb:29:in `update_achievement'
  app/controllers/game_controller.rb:183:in `check_point'
  app/controllers/game_controller.rb:177:in `each'
  app/controllers/game_controller.rb:177:in `check_point'

The Solution:

The has_many :through was originally a has_and_belongs_to_many relation between the outer models, but since I needed to store more data in the join model I switched to a has_many :through.  The problem was that while I correctly set the relation in Rails, I forgot to add the id column in the join model. Adding the id column solved the problem.

No comments:

Post a Comment