0

基本的な基本的な質問で申し訳ありませんが、RoRドキュメントを理解するのに問題があります。

学生、クラス、Enrolled_inの3つのモデルがあるとします。明確でない場合、学生はクラスに登録するため、Enrolled_inには外部キーとしてStudentsとClassesが必要です。これらのそれぞれのモデルを生成しましたが、関連する移行ファイルと各テーブルの関連するモデルファイルに何を入れるべきか混乱しています。移行ファイルでテーブルの列を指定し、モデルで主要な制約を指定しますか?

誰かがこれを明確にするか、私が投稿した質問の例をどのように解決するかを教えてくれれば、それは本当に役に立ちます。ありがとう。

4

1 に答える 1

3

まず、規則に従うには、モデル名はEnrolledInではなく にする必要がありEnrolled_inます。Enrollmentさらに良いことに、名詞として明確な意味を持つまたは何かに変更します。Classまた、モデル名として (すでに Ruby オブジェクトである)を使用しようとすると、問題が発生することになります。おそらく、Courseまたはそれに似たものに変更します。

それはさておき、移行のすべての列を定義する必要があります。enrolled_ins次のようにテーブルを定義できます。

add_table :enrolled_ins do |t|
  t.references :student
  t.references :course        # I'm using course instead of class as noted above
end

ショートカットはreferences、:student_id と :course_id を整数フィールドとして追加します。

モデル ファイルには、次のものがあります。

# student.rb
class Student < ActiveRecord::Base
  has_many :enrolled_ins
  has_many :courses, :through => :enrolled_ins
end

# course.rb
class Course < ActiveRecord::Base
  has_many :enrolled_ins
  has_many :students, :through => :enrolled_ins
end

# enrolled_in.rb
class EnrolledIn < ActiveRecord::Base
  belongs_to :student
  belongs_to :course
end
于 2012-09-30T02:05:21.960 に答える