diff --git a/app/models/education/program/with_alumni.rb b/app/models/education/program/with_alumni.rb index 602d0d2b1099154181ee68f5c5e83d64788a5e4c..475572935cce3f68fb1c79b283f528288c7156f8 100644 --- a/app/models/education/program/with_alumni.rb +++ b/app/models/education/program/with_alumni.rb @@ -12,27 +12,36 @@ module Education::Program::WithAlumni alias_attribute :university_person_alumni, :alumni has_many :alumni_experiences, -> { distinct }, - class_name: 'University::Person::Experience', through: :alumni, source: :experiences alias_attribute :university_person_experiences, :alumni_experiences has_many :alumni_organizations, -> { distinct }, - class_name: 'University::Organization', through: :alumni_experiences, source: :organization alias_attribute :university_person_alumni_organizations, :alumni_organizations - has_many :academic_years, -> { distinct }, - class_name: 'Education::AcademicYear', - through: :cohorts, - source: :academic_year - alias_attribute :education_academic_years, :academic_years + # TODO: Find a fix for wrong table name on WHERE clause + # SELECT "education_academic_years".* + # FROM "education_academic_years" + # INNER JOIN "education_cohorts" + # ON "education_academic_years"."id" = "education_cohorts"."academic_year_id" + # WHERE "cohorts"."program_id" = '<uuid>' + # + # has_many :academic_years, -> { distinct }, + # class_name: 'Education::AcademicYear', + # through: :cohorts, + # source: :academic_year + # alias_attribute :education_academic_years, :academic_years # Dénormalisation des alumni pour le faceted search has_and_belongs_to_many :university_people, class_name: 'University::Person', foreign_key: 'education_program_id', association_foreign_key: 'university_person_id' + + def academic_years + Education::AcademicYear.where(id: cohorts.pluck(:academic_year_id)) + end end end diff --git a/app/models/university/person/experience.rb b/app/models/university/person/experience.rb index d4b2dbb112f48ca84c38004278f68e798eec4d32..3cee8c3347cd85fbc792cc0aac2bfa61b3ac4523 100644 --- a/app/models/university/person/experience.rb +++ b/app/models/university/person/experience.rb @@ -27,7 +27,7 @@ class University::Person::Experience < ApplicationRecord include WithUniversity belongs_to :person - belongs_to :organization + belongs_to :organization, class_name: "University::Organization" scope :ordered, -> { order(from_year: :desc)} end diff --git a/app/models/university/person/with_education.rb b/app/models/university/person/with_education.rb index 5348cec25a2d84e8a38287daf05cdad4a5d8a80b..f22aed32deca953f0c34397016482345a9a9f67b 100644 --- a/app/models/university/person/with_education.rb +++ b/app/models/university/person/with_education.rb @@ -18,7 +18,7 @@ module University::Person::WithEducation source: :target, source_type: "Education::Program" - has_many :experiences + has_many :experiences, class_name: "University::Person::Experience" has_and_belongs_to_many :cohorts, class_name: '::Education::Cohort',