From df08a8ab8c3ba1b4670bcac9667098e6e116a7de Mon Sep 17 00:00:00 2001 From: pskl Date: Fri, 16 Aug 2024 16:52:04 +0200 Subject: [PATCH] Attach Mefs to SchoolYears (#1075) Closes #1064 - [x] New relationship - [x] Migration + new ref --- app/models/mef.rb | 2 ++ db/mef_seeder.rb | 2 +- .../20240814133039_add_school_year_to_mef.rb | 20 +++++++++++++++++++ db/schema.rb | 5 ++++- spec/factories/mefs.rb | 1 + 5 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20240814133039_add_school_year_to_mef.rb diff --git a/app/models/mef.rb b/app/models/mef.rb index e9f2c9629..7842c393d 100644 --- a/app/models/mef.rb +++ b/app/models/mef.rb @@ -3,6 +3,8 @@ class Mef < ApplicationRecord enum :ministry, %i[menj masa armee mer] + belongs_to :school_year + scope :with_wages, -> { joins("JOIN wages ON wages.mef_codes ? mefs.code") } validates :label, :code, :short, :mefstat11, :ministry, presence: true diff --git a/db/mef_seeder.rb b/db/mef_seeder.rb index a2b3711ef..35860cf63 100644 --- a/db/mef_seeder.rb +++ b/db/mef_seeder.rb @@ -26,7 +26,7 @@ def self.seed end end - attributes + attributes.merge("school_year_id" => SchoolYear.current.id) end Mef.upsert_all(mefs, unique_by: :code) # rubocop:disable Rails/SkipsModelValidations diff --git a/db/migrate/20240814133039_add_school_year_to_mef.rb b/db/migrate/20240814133039_add_school_year_to_mef.rb new file mode 100644 index 000000000..2e130a917 --- /dev/null +++ b/db/migrate/20240814133039_add_school_year_to_mef.rb @@ -0,0 +1,20 @@ +class AddSchoolYearToMef < ActiveRecord::Migration[7.2] + def up + add_reference :mefs, :school_year, foreign_key: true + + current_school_year = SchoolYear.current + + if current_school_year + execute <<-SQL + UPDATE mefs + SET school_year_id = #{current_school_year.id} + SQL + else + puts "Warning: No current SchoolYear found. Mef records were not updated." + end + end + + def down + remove_reference :mefs, :school_year + end +end diff --git a/db/schema.rb b/db/schema.rb index 0726fd967..3a20f3715 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2024_07_19_093120) do +ActiveRecord::Schema[7.2].define(version: 2024_08_14_133039) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -166,8 +166,10 @@ t.datetime "updated_at", null: false t.string "mefstat11", null: false t.integer "ministry", null: false + t.bigint "school_year_id" t.index ["code"], name: "index_mefs_on_code", unique: true t.index ["mefstat11"], name: "index_mefs_on_mefstat11" + t.index ["school_year_id"], name: "index_mefs_on_school_year_id" end create_table "pfmp_transitions", force: :cascade do |t| @@ -308,6 +310,7 @@ add_foreign_key "establishments", "users", column: "confirmed_director_id" add_foreign_key "invitations", "establishments" add_foreign_key "invitations", "users" + add_foreign_key "mefs", "school_years" add_foreign_key "pfmp_transitions", "pfmps" add_foreign_key "pfmps", "schoolings" add_foreign_key "ribs", "students" diff --git a/spec/factories/mefs.rb b/spec/factories/mefs.rb index e8bb866bf..465ef191c 100644 --- a/spec/factories/mefs.rb +++ b/spec/factories/mefs.rb @@ -7,6 +7,7 @@ short { "1ERE COLLAGE DE GOMETTES" } mefstat11 { Faker::Number.number(digits: 11) } ministry { Mef.ministries[:menj] } + school_year { SchoolYear.current } transient do daily_rate { 1 }