J'ai la configuration suivante:Essayer de se référer à l'auto dans un périmètre de has_many dans des rails 5
class TeamEnrollment < ApplicationRecord
belongs_to :team
has_many :term_enrollments, through: :team
end
Le code ci-dessus fonctionne très bien. Maintenant, je dois changer la ligne has_many pour ressembler à ceci:
has_many :term_enrollments,
-> {where("(term_enrollments.term_start_date <= ? AND term_enrollments.term_end_date >= ?) OR (term_enrollments.term_start_date >= ? AND term_enrollments.term_end_date > ?) OR (term_enrollments.term_start_date <= ? AND term_enrollments.term_end_date >= ?)", self.start_date, self.start_date, self.start_date, self.termination_date, self.termination_date, self.termination_date)}
, through: :team
À partir du code ci-dessus, je suis l'erreur suivante si j'essaie de faire TeamEnrollment.first.term_enrollments
:
undefined method `start_date' for #<TermEnrollment::ActiveRecord_Relation:0x007ff706550550>
J'ai testé la clause where
avec la première configuration de code ci-dessus et cela fonctionne bien. Ce n'est que dans la clause has_many
que cela ne fonctionne pas. Je suis assez sûr que cela a à voir avec l'utilisation de soi à l'intérieur de la has_many through
. J'essaie de me référer à start_date de TeamEnrollment. Comment puis-je faire cela?