无法获得模型包含的工作方法

时间:2014-03-14 17:29:07

标签: ruby-on-rails activerecord

我遇到了一个奇怪的错误,我不知道如何调试它。我尝试了一些不同的东西,但没有任何工作。

当我在我的应用程序中运行以下代码时

CoursePresentation.includes(:course)

我收到以下错误

[6] pry(main)> CoursePresentation.includes(:course)
  CoursePresentation Load (0.2ms)  SELECT "course_presentations".* FROM "course_presentations"
  Course Load (0.2ms)  SELECT "courses".* FROM "courses"  WHERE "courses"."id" IN (1)
(pry) output error: #<NoMethodError: undefined method `each' for nil:NilClass>

我可以提供任何帮助或方向来解决这个问题。我有它工作,但现在它不是:/

我对这些模型的代码如下

class Course < ActiveRecord::Base
  self.primary_key= 'id'

  has_many :course_presentations

  validates :name, presence: true
end

class CoursePresentation < ActiveRecord::Base
  belongs_to :course
  has_many :interactions

  self.primary_key= 'id'

  validates :course_id, :year, :month, presence: true

  def full_name
    course.name + ' (' + period + ')'
  end

  def period
    year.to_s + month.to_s
  end

  def period_description
    "#{ Date::MONTHNAMES[month.to_i]}, #{year}" 
  end
end

感谢。

1 个答案:

答案 0 :(得分:0)

发现了这个问题。

对模型进行检查后发现我的一个外键是一个字符串。将此更新为整数后,一切正常。

[6] pry(main)> Course.inspect
"Course(id: integer, name: string, is_active: boolean, created_at: datetime, updated_at: datetime)"
[7] pry(main)> CoursePresentation.inspect
"CoursePresentation(id: integer, course_id: string, year: integer, month: integer, is_active: boolean, created_at: datetime, updated_at: datetime, mail_chimp_key: string)"

感谢您的评论,他们确实帮助思考了这个方向。