親、学生、家庭教師の 3 つの基本的なユーザー タイプを持つ自己参照型のユーザー クラスを作成しようとしています。生徒は保護者に属し、チューターに属することもできます。もちろん、私が書いたように、レールは生徒を持つ親だけを認識します。User.students は、ユーザーが家庭教師の場合は常に空を返しますが、ユーザーが親の場合は機能します。何か案は?
class User < ActiveRecord::Base
# Sets up the tutor has_many students assocation
has_many :tutees, :foreign_key=>"tutor_id",
:class_name=>"Relationship"
has_many :students, :through=>:tutees
# Sets up the student has_many tutors association
has_many :mentors, :foreign_key=>"student_id",
:class_name=>"Relationship"
has_many :tutors, :through=>:mentors
# Sets up the parent has_many students assocation
has_many :children, :foreign_key=>"parent_id",
:class_name=>"Relationship"
has_many :students, :through=>:children
# Sets up the student has_many parents
has_many :mommies, :foreign_key=>"student_id",
:class_name=>"Relationship"
has_many :parents, :through=>:mommies
リレーションシップ クラス:
class Relationship < ActiveRecord::Base
belongs_to :tutor, :class_name=>"User"
belongs_to :student, :class_name=>"User"
belongs_to :parent, :class_name=>"User"
end
セクション (保護者、生徒、チューター) もそれぞれ独自のクラスです。基本的なユーザー情報は User クラスにあり、チューターに固有のデータは Tutor クラスにあります。