0

私は最初の Rails アプリケーションを開始しています。関連付けが期待どおりに機能することを確認したいと思います。私のアプリケーションのモデルの概要は次のとおりです。

class School < ActiveRecord::Base
  has_many :courses
  has_many :teachers, :through => :courses
  has_many :students, :through => :courses
end

class Course < ActiveRecord::Base
  belongs_to :school
  belongs_to :teacher
  has_and_belongs_to_many :students
end

class Teacher < ActiveRecord::Base
  has_many :courses
  has_many :students, :through => :courses
end

class Student < ActiveRecord::Base
  has_and_belongs_to_many :courses
  has_many :teachers, :through => :courses
end

これまでに気づいたことの 1 つは、学校の教師または生徒を取得しようとすると、同じレコードが複数回返されることです。uniq を呼び出すことができることは承知していますが、そうする必要はありません。だから私はこれを行うことができるより良い方法があるかどうか疑問に思っています。

4

2 に答える 2

0

一意の制約への関心に関しては、実際にはhas_many :through一意のレコードのみを返すように指定できます。

has_many :teachers, through: :courses, -> { distinct }

このトピックに関するRails ガイドを確認してください。

追加 について ,:school_idまたはStudentTeacherの 関連 が へ のSchool登録 または 教育 によって 純粋 に 定義 さ れ て いるのならCourse, 私 はあなた のと:school_idTeacherParent

于 2013-08-27T04:07:08.097 に答える