Rails has_many和belongs_to与外键错误的关系

But*_*eer 5 web-applications ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我正在尝试使用外键在rails上实现has_many和belongs_to关系,但是我在尝试正确实现它时遇到了麻烦,任何帮助都将受到赞赏.我也将此作为指南:http://guides.rubyonrails.org/association_basics.html

这两个模型是主题和课程.一门学科有很多课程,一堂课属于一门学科.外键是subject_code.

以下是相关代码.

主题模型

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
Run Code Online (Sandbox Code Playgroud)

课程模型.

class Lesson < ActiveRecord::Base
  attr_accessible :lesson_id, 
                  :lesson_type, 
                  :subject_code

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

end
Run Code Online (Sandbox Code Playgroud)

我不确定这个实现在哪里出错,因为我无法从主题中检索课程.我的Lesson数据库表也有一个subject_code列.

在弄乱的时候,我发现如果我的主题模型我做了以下更改

  has_many :lessons,
           :foreign_key => "lesson_id"
Run Code Online (Sandbox Code Playgroud)

我能够检索有关课程的信息,但是将lesson_id绑定到subject_id.但是,将外键更改为subject_code,它不起作用,我只是为什么感到困惑.

任何帮助,将不胜感激.

shw*_*eta 5

在主题模型中

has_many :lessons, :primary_key => "subject_code"
Run Code Online (Sandbox Code Playgroud)