奇怪的问题has_many通过更新Rails中的关联

时间:2015-01-21 07:05:47

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord models

我从Ruby 2.1.2更新到Ruby 2.2.0并更新了链接到它的所有gem。我有几个模型相互关联,如

class Question < ActiveRecord::Base

      belongs_to :course_version  
      has_one :course, through: :course_version


      has_many :answer_questions
      has_many :answers, through: :answer_questions

end

class AnswerQuestion < ActiveRecord::Base

      belongs_to :answer
      belongs_to :question

end

class Answer < ActiveRecord::Base

      has_many :answer_questions
      has_many :questions, through: :answer_questions

end

正如您所理解的那样,我们有一些问题可以得到答案并通过answer_questions来了解他们得到了什么。在我更新Ruby之前,它工作得很好。现在我做的事情......

my_question.answers << my_answer

它真的爆炸了

NoMethodError: undefined method `name' for nil:NilClass
    /Users/Loschcode/.rvm/gems/ruby-2.2.0/gems/activerecord-4.0.0/lib/active_record/associations/has_many_association.rb:80:in `cached_counter_attribute_name'
    /Users/Loschcode/.rvm/gems/ruby-2.2.0/gems/activerecord-4.0.0/lib/active_record/associations/has_many_association.rb:76:in `has_cached_counter?'
    /Users/Loschcode/.rvm/gems/ruby-2.2.0/gems/activerecord-4.0.0/lib/active_record/associations/has_many_association.rb:84:in `update_counter'

name是一个应该在questions表格中的字段。我尝试了解这一点已经过了几个小时...

2 个答案:

答案 0 :(得分:4)

仅供参考,我可以确认这是ActiveRecord和Ruby 2.2的问题。我正在使用ActiveRecord 3.2,因为改为3-2稳定分支,问题就消失了。我相信现在已经在4.x分支中修复了。我在https://github.com/rails/rails/issues/18991已经提出了一个问题。

答案 1 :(得分:2)

使用ruby 2.2.0我遇到了同样的问题。对于特定项目,我回到了我之前的版本2.1.3,一切顺利。