5

Próbuję zaimplementować relację has_many i belongs_to na szynach z kluczem obcym, ale mam problem z próbą implementacji go prawidłowo, każda pomoc byłaby doceniana. Używam tego również jako przewodnika: http://guides.rubyonrails.org/association_basics.htmlSzyny has_many i belongs_to relacja z obcym kluczowym błędem

Obydwa modele są przedmiotem i lekcjami. Przedmiot ma wiele lekcji, a lekcja należy do tematu. Klucz obcy to kod podmiotu.

Poniżej podano odpowiednie kody.

Dotyczy modelu

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 

Model lekcja.

Nie jestem pewien, gdzie popełniłem błąd w związku z tą implementacją, ponieważ nie mogę pobrać lekcji z tematu. Moja tabela bazy danych lekcji ma już kolumnę dla kodu podmiotu.

Podczas aprowizacji, stwierdziliśmy, że jeśli do mojego modelu z zastrzeżeniem, że należy wprowadzić następujące zmiany

has_many :lessons, 
      :foreign_key => "lesson_id" 

udało mi się pobrać informacji o lekcjach, ale z lesson_id przywiązany do subject_id. Jednak zmiana klucza obcego na subject_code nie zadziałała, a ja po prostu nie rozumiem, dlaczego.

Każda pomoc zostanie doceniona.

+0

usunąć ': foreign_key => "subject_code"' 'w modelu Subject'. – VenkatK

+0

Otrzymuję ten błąd, gdy robię to. SQLite3 :: SQLException: brak takiej kolumny: lessons.subject_id: SELECT "lekcje". * Z "lekcji" GDZIE "lekcje". "Subject_id" = 8 –

Odpowiedz

4

w Subject Modelu

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

Dzięki. Jednak otrzymuję ten błąd. SQLite3 :: SQLException: brak takiej kolumny: lessons.subject_id: SELECT "lekcje". * Z "lekcji" GDZIE "lekcje". "Subject_id" = "CM101" po wykonaniu tej czynności. –

+0

Wygląda na to, że może być łatwiej po prostu zgodnie z konwencją korzystania z obiektu subject_id –