5

外部キーを使用してレール上に has_many と belongs_to の関係を実装しようとしていますが、正しく実装しようとすると問題が発生します。助けていただければ幸いです。これもガイドとして使用しています:http://guides.rubyonrails.org/association_basics.html

2 つのモデルは、サブジェクトとレッスンです。サブジェクトには多くのレッスンがあり、レッスンはサブジェクトに属します。外部キーは 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 に変更しても機能せず、その理由がわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

5

サブジェクト モデルで

has_many :lessons, :primary_key => "subject_code"
于 2013-01-05T07:06:24.037 に答える