Rails中使用外键的has_many和belongs_to关系出现错误

5
我正在尝试在Rails上使用外键实现has_many和belongs_to关系,但我在正确实现它时遇到了麻烦,请帮忙。我也参考了这个指南:http://guides.rubyonrails.org/association_basics.html 这两个模型是subject和lessons。一个subject有很多lessons,而一个lesson属于一个subject。外键是subject_code。
以下是相关代码。
Subject模型:
class Subject < ActiveRecord::Base
                  :subject_code, 
                  :subject_name
                  :lessons_attributes

  has_many :lessons,
           :foreign_key => "subject_code"

  accepts_nested_attributes_for :lessons, 
                                :allow_destroy => true  
end

课程模型。
class Lesson < ActiveRecord::Base
  attr_accessible :lesson_id, 
                  :lesson_type, 
                  :subject_code

  belongs_to :subject, 
             :class_name=>"Subject",
             :foreign_key=>"subject_code"

end

我不确定我的这个实现哪里错了,因为我无法从一个学科中检索到课程。我的数据库表已经有了一个名为subject_code的列。
在瞎搞的时候,我发现如果对我的subject模型进行以下更改:
  has_many :lessons,
           :foreign_key => "lesson_id"

我能够检索到与课程有关的信息,但是在将外键更改为科目代码后,无法工作,我对此感到困惑。 如有帮助,将不胜感激。

Subject 模型中移除 :foreign_key => "subject_code" - VenkatK
当我这样做时,我会得到这个错误。SQLite3 :: SQLException:没有这样的列:lessons.subject_id:SELECT“lessons”。* FROM“lessons”WHERE“lessons”。“subject_id”= 8 - Butter Beer
1个回答

5

在主题模型中

has_many :lessons, :primary_key => "subject_code"

谢谢。不过,我在执行后出现了这个错误。SQLite3::SQLException: no such column: lessons.subject_id: SELECT "lessons".* FROM "lessons" WHERE "lessons"."subject_id" = 'CM101' - Butter Beer
似乎遵循Rails的惯例使用subject_id会更容易些。 - Butter Beer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接