異なる役割を表す条件付きの 2 つのテーブル間に多数の多対多の関係があります。
class Course < ActiveRecord::Base
...
has_many :course_mentors, :conditions => { :type_str => "mentor" }, :class_name => CourseUser
has_many :mentors, :through => :course_mentors, :source => :user
has_many :course_enrollees, :conditions => { :type_str => "enrollee" }, :class_name => CourseUser
has_many :enrollees, :through => :course_enrollees, :source => :user
...
end
関連付けの 1 つの内容を独自に取得するには、@course.enrollees、@course.mentors などを実行するだけです。ただし、登録者とメンターの両方を一緒に取得できると便利な場合があります。
私は多くの異なる関連付けを持っているため、単一の関連付けの組み合わせごとに追加の関連付けを作成することは現実的ではありません。いつでもできる
(@course.enrollees + @course.mentors).sort
ただし、これにより、データベースへの 2 つの要求が発生し、エントリが重複する可能性があります。
アソシエーションの関数も調査しましたmerge
が、これは空のリレーションを返すだけです。
これを行うための最良のレールのような方法は何ですか?