Rails 关系未定义列

Rails relationship undefined column

我有用户和缺席

class User
  has_many :absences
end

class Absence 
  belongs_to :student, foreign_key: "student_id", class_name: "User"
end

我的 Absence 迁移有

t.integer :student_id, index: true, null: false

出于某种原因,我可以说

Absence.first.student

但是当我说

Absence.first.student.absences

我明白了

ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column absences.user_id does not exist) LINE 1: SELECT "absences".* FROM "absences" WHERE "absences"."user_... ^ : SELECT "absences".* FROM "absences" WHERE "absences"."user_id" = LIMIT

显然,我没有正确设置某物,因为它正在寻找 user_id 而不是 student_id,但我不知道为什么会这样...谢谢您的任何建议!

您收到此错误的原因是您没有在 has_many 关系中指定自定义外键。以下代码将解决您的问题。

class User
  has_many :absences, foreign_key: "student_id"
end

class Absence 
  belongs_to :student, foreign_key: "student_id", class_name: "User"
end