From 07d0df78142c1ce4eed32dec967a733a6d863c31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com> Date: Mon, 12 Feb 2024 16:59:57 +0100 Subject: [PATCH] reverse column names in habtm (#1620) * reverse column names in habtm * fix --- app/models/administration/location.rb | 12 +++---- .../education/program/with_locations.rb | 4 +-- app/models/education/school/with_locations.rb | 4 +-- app/models/research/hal/author.rb | 8 ++--- app/models/research/laboratory.rb | 4 +-- app/models/research/publication.rb | 10 +++--- app/models/university/person/with_research.rb | 12 +++---- ...931_reverse_column_names_in_join_tables.rb | 33 +++++++++++++++++ db/schema.rb | 36 +++++++++---------- 9 files changed, 78 insertions(+), 45 deletions(-) create mode 100644 db/migrate/20240209102931_reverse_column_names_in_join_tables.rb diff --git a/app/models/administration/location.rb b/app/models/administration/location.rb index 04460d8cd..521f01724 100644 --- a/app/models/administration/location.rb +++ b/app/models/administration/location.rb @@ -43,20 +43,20 @@ class Administration::Location < ApplicationRecord has_and_belongs_to_many :schools, class_name: 'Education::School', - foreign_key: :education_school_id, - association_foreign_key: :administration_location_id + foreign_key: :administration_location_id, + association_foreign_key: :education_school_id alias_method :education_schools, :schools has_and_belongs_to_many :programs, class_name: 'Education::Program', - foreign_key: :education_program_id, - association_foreign_key: :administration_location_id + foreign_key: :administration_location_id, + association_foreign_key: :education_program_id alias_method :education_programs, :programs - has_many :diplomas, + has_many :diplomas, -> { distinct }, through: :programs, source: :diploma alias_method :education_diplomas, :diplomas - + scope :ordered, -> { order(:name) } diff --git a/app/models/education/program/with_locations.rb b/app/models/education/program/with_locations.rb index 9c03f1e9c..f2d3c74a8 100644 --- a/app/models/education/program/with_locations.rb +++ b/app/models/education/program/with_locations.rb @@ -4,8 +4,8 @@ module Education::Program::WithLocations included do has_and_belongs_to_many :administration_locations, class_name: 'Administration::Location', - foreign_key: :administration_location_id, - association_foreign_key: :education_program_id + foreign_key: :education_program_id, + association_foreign_key: :administration_location_id alias_method :locations, :administration_locations end diff --git a/app/models/education/school/with_locations.rb b/app/models/education/school/with_locations.rb index ac62adfde..d77be3a2d 100644 --- a/app/models/education/school/with_locations.rb +++ b/app/models/education/school/with_locations.rb @@ -4,8 +4,8 @@ module Education::School::WithLocations included do has_and_belongs_to_many :administration_locations, class_name: 'Administration::Location', - foreign_key: :administration_location_id, - association_foreign_key: :education_school_id + foreign_key: :education_school_id, + association_foreign_key: :administration_location_id alias_method :locations, :administration_locations end diff --git a/app/models/research/hal/author.rb b/app/models/research/hal/author.rb index d9ab7826d..638f28ca7 100644 --- a/app/models/research/hal/author.rb +++ b/app/models/research/hal/author.rb @@ -20,12 +20,12 @@ class Research::Hal::Author < ApplicationRecord include Sanitizable has_and_belongs_to_many :publications, - foreign_key: 'research_publication_id', - association_foreign_key: :research_hal_author_id + foreign_key: :research_hal_author_id, + association_foreign_key: :research_publication_id has_and_belongs_to_many :university_person_researchers, class_name: 'University::Person', - foreign_key: :university_person_id, - association_foreign_key: :research_hal_author_id + foreign_key: :research_hal_author_id, + association_foreign_key: :university_person_id alias :researchers :university_person_researchers scope :ordered, -> { order(:last_name, :first_name, :docid)} diff --git a/app/models/research/laboratory.rb b/app/models/research/laboratory.rb index ec5f2b3ce..8700b476a 100644 --- a/app/models/research/laboratory.rb +++ b/app/models/research/laboratory.rb @@ -41,8 +41,8 @@ class Research::Laboratory < ApplicationRecord has_and_belongs_to_many :researchers, class_name: 'University::Person::Researcher', - foreign_key: :university_person_id, - association_foreign_key: :research_laboratory_id + foreign_key: :research_laboratory_id, + association_foreign_key: :university_person_id validates :name, :address, :city, :zipcode, :country, presence: true diff --git a/app/models/research/publication.rb b/app/models/research/publication.rb index ce6064e3b..7aed742dd 100644 --- a/app/models/research/publication.rb +++ b/app/models/research/publication.rb @@ -38,13 +38,13 @@ class Research::Publication < ApplicationRecord has_and_belongs_to_many :researchers, class_name: 'University::Person', - foreign_key: :university_person_id, - association_foreign_key: :research_publication_id + foreign_key: :research_publication_id, + association_foreign_key: :university_person_id has_and_belongs_to_many :authors, class_name: 'Research::Hal::Author', - foreign_key: :research_hal_author_id, - association_foreign_key: :research_publication_id + foreign_key: :research_publication_id, + association_foreign_key: :research_hal_author_id scope :ordered, -> { order(publication_date: :desc)} @@ -100,7 +100,7 @@ class Research::Publication < ApplicationRecord return if hal? self.authors_citeproc = researchers.map do |researcher| { - "family" => researcher.last_name, + "family" => researcher.last_name, "given" => researcher.first_name } end diff --git a/app/models/university/person/with_research.rb b/app/models/university/person/with_research.rb index d70abcb3f..043d0fb37 100644 --- a/app/models/university/person/with_research.rb +++ b/app/models/university/person/with_research.rb @@ -4,8 +4,8 @@ module University::Person::WithResearch included do has_and_belongs_to_many :research_hal_authors, class_name: 'Research::Hal::Author', - foreign_key: :research_hal_author_id, - association_foreign_key: :university_person_id + foreign_key: :university_person_id, + association_foreign_key: :research_hal_author_id alias :hal_authors :research_hal_authors has_many :authored_research_theses, @@ -20,14 +20,14 @@ module University::Person::WithResearch has_and_belongs_to_many :research_publications, class_name: 'Research::Publication', - foreign_key: :research_publication_id, - association_foreign_key: :university_person_id + foreign_key: :university_person_id, + association_foreign_key: :research_publication_id alias :publications :research_publications has_and_belongs_to_many :research_laboratories, class_name: 'Research::Laboratory', - foreign_key: :research_laboratory_id, - association_foreign_key: :university_person_id + foreign_key: :university_person_id, + association_foreign_key: :research_laboratory_id alias :laboratories :research_laboratories scope :with_hal_identifier, -> { where.not(hal_form_identifier: [nil,'']) } diff --git a/db/migrate/20240209102931_reverse_column_names_in_join_tables.rb b/db/migrate/20240209102931_reverse_column_names_in_join_tables.rb new file mode 100644 index 000000000..dcaad004d --- /dev/null +++ b/db/migrate/20240209102931_reverse_column_names_in_join_tables.rb @@ -0,0 +1,33 @@ +class ReverseColumnNamesInJoinTables < ActiveRecord::Migration[7.1] + def change + # research_hal_author_id, university_person_id + rename_column :research_hal_authors_university_people, :research_hal_author_id, :temporary_id + rename_column :research_hal_authors_university_people, :university_person_id, :research_hal_author_id + rename_column :research_hal_authors_university_people, :temporary_id, :university_person_id + + # research_publication_id, university_person_id + rename_column :research_publications_university_people, :research_publication_id, :temporary_id + rename_column :research_publications_university_people, :university_person_id, :research_publication_id + rename_column :research_publications_university_people, :temporary_id, :university_person_id + + # research_hal_author_id, research_publication_id + rename_column :research_hal_authors_publications, :research_hal_author_id, :temporary_id + rename_column :research_hal_authors_publications, :research_publication_id, :research_hal_author_id + rename_column :research_hal_authors_publications, :temporary_id, :research_publication_id + + # research_laboratory_id, university_person_id + rename_column :research_laboratories_university_people, :research_laboratory_id, :temporary_id + rename_column :research_laboratories_university_people, :university_person_id, :research_laboratory_id + rename_column :research_laboratories_university_people, :temporary_id, :university_person_id + + # administration_location_id, education_school_id + rename_column :administration_locations_education_schools, :administration_location_id, :temporary_id + rename_column :administration_locations_education_schools, :education_school_id, :administration_location_id + rename_column :administration_locations_education_schools, :temporary_id, :education_school_id + + # administration_location_id, education_program_id + rename_column :administration_locations_education_programs, :administration_location_id, :temporary_id + rename_column :administration_locations_education_programs, :education_program_id, :administration_location_id + rename_column :administration_locations_education_programs, :temporary_id, :education_program_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 5915dd513..cfa78093a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -77,17 +77,17 @@ ActiveRecord::Schema[7.1].define(version: 2024_02_09_135241) do end create_table "administration_locations_education_programs", id: false, force: :cascade do |t| - t.uuid "administration_location_id", null: false t.uuid "education_program_id", null: false - t.index ["administration_location_id", "education_program_id"], name: "index_location_program" - t.index ["education_program_id", "administration_location_id"], name: "index_program_location" + t.uuid "administration_location_id", null: false + t.index ["administration_location_id", "education_program_id"], name: "index_program_location" + t.index ["education_program_id", "administration_location_id"], name: "index_location_program" end create_table "administration_locations_education_schools", id: false, force: :cascade do |t| - t.uuid "administration_location_id", null: false t.uuid "education_school_id", null: false - t.index ["administration_location_id", "education_school_id"], name: "index_location_school" - t.index ["education_school_id", "administration_location_id"], name: "index_school_location" + t.uuid "administration_location_id", null: false + t.index ["administration_location_id", "education_school_id"], name: "index_school_location" + t.index ["education_school_id", "administration_location_id"], name: "index_location_school" end create_table "administration_qualiopi_criterions", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| @@ -774,17 +774,17 @@ ActiveRecord::Schema[7.1].define(version: 2024_02_09_135241) do end create_table "research_hal_authors_publications", id: false, force: :cascade do |t| - t.uuid "research_hal_author_id", null: false t.uuid "research_publication_id", null: false - t.index ["research_hal_author_id", "research_publication_id"], name: "hal_author_publication" - t.index ["research_publication_id", "research_hal_author_id"], name: "hal_publication_author" + t.uuid "research_hal_author_id", null: false + t.index ["research_hal_author_id", "research_publication_id"], name: "hal_publication_author" + t.index ["research_publication_id", "research_hal_author_id"], name: "hal_author_publication" end create_table "research_hal_authors_university_people", id: false, force: :cascade do |t| - t.uuid "research_hal_author_id", null: false t.uuid "university_person_id", null: false - t.index ["research_hal_author_id", "university_person_id"], name: "hal_author_person" - t.index ["university_person_id", "research_hal_author_id"], name: "hal_person_author" + t.uuid "research_hal_author_id", null: false + t.index ["research_hal_author_id", "university_person_id"], name: "hal_person_author" + t.index ["university_person_id", "research_hal_author_id"], name: "hal_author_person" end create_table "research_journal_paper_kinds", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| @@ -884,10 +884,10 @@ ActiveRecord::Schema[7.1].define(version: 2024_02_09_135241) do end create_table "research_laboratories_university_people", id: false, force: :cascade do |t| - t.uuid "research_laboratory_id", null: false t.uuid "university_person_id", null: false - t.index ["research_laboratory_id", "university_person_id"], name: "laboratory_person" - t.index ["university_person_id", "research_laboratory_id"], name: "person_laboratory" + t.uuid "research_laboratory_id", null: false + t.index ["research_laboratory_id", "university_person_id"], name: "person_laboratory" + t.index ["university_person_id", "research_laboratory_id"], name: "laboratory_person" end create_table "research_laboratory_axes", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| @@ -929,10 +929,10 @@ ActiveRecord::Schema[7.1].define(version: 2024_02_09_135241) do end create_table "research_publications_university_people", id: false, force: :cascade do |t| - t.uuid "research_publication_id", null: false t.uuid "university_person_id", null: false - t.index ["research_publication_id", "university_person_id"], name: "index_publication_person" - t.index ["university_person_id", "research_publication_id"], name: "index_person_publication" + t.uuid "research_publication_id", null: false + t.index ["research_publication_id", "university_person_id"], name: "index_person_publication" + t.index ["university_person_id", "research_publication_id"], name: "index_publication_person" end create_table "research_theses", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| -- GitLab