学生がメンバーシップ (たとえば、コースと学生の has_and_belongs_to_many 関係) を介して登録できるコースがあるとします。一部のメンバーシップは、クラスを観察するだけの学生向けです(単位取得などではありません)。
class Course < ActiveRecord::Base
has_many :memberships
has_many :students,
:through => :memberships
has_many :observers,
:through => :memberships,
:source => :student,
:conditions => { :memberships => { :observer => true }}
end
うまく機能するのは次のとおりです。
observers = Course.find(37).observers
機能しないものは次のとおりです。
new_observer = Course.find(37).observers.build(:name => 'Joe Student')
私は、関連付けを使用して新しいレコードを作成できると考えていたでしょう。
- 新しい Student レコード ('Joe Student')
- 新しいメンバーシップ レコード (course_id = 37、student_id = (joe)、observer = true)
しかし、代わりに私は得る:
ActiveRecord::AssociationTypeMismatch: Membership expected, got Array
私はこれについて完全に混乱していると確信しており、洞察をいただければ幸いです! また、メンバーシップ モデルの名前付きスコープを使用してこれを実行しようとしましたが、関連付けで has_many にスコープを使用させることができないようです。
可能な限り助けてくれてありがとう!