From 3b77df6aa7c6fe7badda7528e7ef3b994d196638 Mon Sep 17 00:00:00 2001 From: pabois <pierreandre.boissinot@noesya.coop> Date: Thu, 19 May 2022 13:15:39 +0200 Subject: [PATCH] close #390 --- app/models/education/cohort.rb | 6 ------ app/models/education/program/with_alumni.rb | 20 ++++++++++---------- app/models/education/school/with_alumni.rb | 12 +++++++----- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/app/models/education/cohort.rb b/app/models/education/cohort.rb index 11ac56052..fff2ec382 100644 --- a/app/models/education/cohort.rb +++ b/app/models/education/cohort.rb @@ -40,7 +40,6 @@ class Education::Cohort < ApplicationRecord validates_associated :academic_year, :program validates :year, presence: true - # before_validation :set_university_id, on: :create scope :ordered, -> { includes(:academic_year).order('education_academic_years.year DESC') @@ -58,9 +57,4 @@ class Education::Cohort < ApplicationRecord self.academic_year = Education::AcademicYear.where(university_id: university_id, year: val).first_or_create end - private - - # def set_university_id - # self.university_id = self.program.university_id - # end end diff --git a/app/models/education/program/with_alumni.rb b/app/models/education/program/with_alumni.rb index 475572935..5ec4ec189 100644 --- a/app/models/education/program/with_alumni.rb +++ b/app/models/education/program/with_alumni.rb @@ -21,25 +21,25 @@ module Education::Program::WithAlumni source: :organization alias_attribute :university_person_alumni_organizations, :alumni_organizations - # TODO: Find a fix for wrong table name on WHERE clause + # 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' + + # NOTE: 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 }, + # has_many :academic_years, # class_name: 'Education::AcademicYear', - # through: :cohorts, - # source: :academic_year + # through: :education_cohorts, + # source: :education_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 diff --git a/app/models/education/school/with_alumni.rb b/app/models/education/school/with_alumni.rb index a234267c3..d36438ec0 100644 --- a/app/models/education/school/with_alumni.rb +++ b/app/models/education/school/with_alumni.rb @@ -19,14 +19,16 @@ module Education::School::WithAlumni source: :organization alias_attribute :university_person_alumni_organizations, :alumni_organizations - has_many :academic_years, -> { distinct }, - class_name: 'Education::AcademicYear', - through: :programs - alias_attribute :education_academic_years, :academic_years - has_many :cohorts, -> { distinct }, class_name: 'Education::Cohort', through: :programs alias_attribute :education_cohorts, :cohorts + + has_many :academic_years, -> { distinct }, + class_name: 'Education::AcademicYear', + through: :cohorts, + source: :academic_year + alias_attribute :education_academic_years, :academic_years + end end -- GitLab