奇怪的问题 has_many 通过关联更新 Rails
Weird issue has_many through association in updated Rails
我从 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
table 中的字段。我已经花了几个小时来理解这个......
我在使用 ruby 2.2.0 时遇到了同样的问题。具体项目,我回到我之前的版本,2.1.3,一切正常。
仅供参考,我可以确认这是 ActiveRecord 和 Ruby 2.2 的问题。我使用的是 ActiveRecord 3.2,自从更改为 3-2-stable 分支后,问题就消失了。我相信这现在已在 4.x 个分支中修复。我已经在 https://github.com/rails/rails/issues/18991.
提出了这个问题
我从 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
table 中的字段。我已经花了几个小时来理解这个......
我在使用 ruby 2.2.0 时遇到了同样的问题。具体项目,我回到我之前的版本,2.1.3,一切正常。
仅供参考,我可以确认这是 ActiveRecord 和 Ruby 2.2 的问题。我使用的是 ActiveRecord 3.2,自从更改为 3-2-stable 分支后,问题就消失了。我相信这现在已在 4.x 个分支中修复。我已经在 https://github.com/rails/rails/issues/18991.
提出了这个问题