5

我想用外鍵實現has_many和belongs_to關係,但我遇到了麻煩,試圖正確實現它,任何幫助將不勝感激。我也將此作爲指導:http://guides.rubyonrails.org/association_basics.htmlRails has_many和belongs_to與外鍵錯誤的關係

這兩個模型是主題和課程。一門課程有很多課程,一門課程屬於一門課程。外鍵是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 

的教訓模型。

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列。

在瞎搞,我發現,如果我的主題模式,我做以下修改

has_many :lessons, 
      :foreign_key => "lesson_id" 

我能夠檢索有關的教訓,但與lesson_id綁subject_id的信息。但是,將外鍵更改爲subject_code,它不起作用,我只是爲什麼而困惑。

任何幫助,將不勝感激。

+0

刪除':foreign_key => 「subject_code」''中模型Subject'。 – VenkatK

+0

我得到這個錯誤,當我這樣做。SQLite3 :: SQLException:沒有這樣的列:lessons.subject_id:SELECT「lessons」。* FROM「lessons」WHERE「lessons」。「subject_id」= 8 –

回答

4

在物體模型

has_many :lessons, :primary_key => "subject_code" 
+0

謝謝。但是,我收到此錯誤。 SQLite3 :: SQLException:沒有這樣的列:lessons.subject_id:SELECT「lessons」。* FROM「lessons」WHERE「lessons」。「subject_id」='CM101'完成後。 –

+0

似乎它可能更容易,只需遵循使用subject_id的軌道約定 –

相關問題