diff --git a/app/models/individual.rb b/app/models/individual.rb index 3a0c1410c..b5ac55067 100644 --- a/app/models/individual.rb +++ b/app/models/individual.rb @@ -8,6 +8,7 @@ class Individual < ApplicationRecord validates :birthdate, format: { with: /\A\d{4}\-\d{2}\-\d{2}\z/, message: "La date n'est pas au format AAAA-MM-JJ" }, allow_nil: true before_validation :set_iso_date, if: -> { birthdate_changed? } + before_save :save_birthdate_in_datetime_format private @@ -17,4 +18,13 @@ class Individual < ApplicationRecord self.birthdate = Date.parse(birthdate).iso8601 end end + + def save_birthdate_in_datetime_format + if birthdate.present? + begin + self.second_birthdate = Date.parse(birthdate) + rescue + end + end + end end diff --git a/db/migrate/20180403094135_add_second_birthdate_column_to_individual.rb b/db/migrate/20180403094135_add_second_birthdate_column_to_individual.rb new file mode 100644 index 000000000..a3a8c1c4f --- /dev/null +++ b/db/migrate/20180403094135_add_second_birthdate_column_to_individual.rb @@ -0,0 +1,5 @@ +class AddSecondBirthdateColumnToIndividual < ActiveRecord::Migration[5.2] + def change + add_column :individuals, :second_birthdate, :date + end +end diff --git a/db/schema.rb b/db/schema.rb index 0e708a7fe..303a660fd 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.define(version: 2018_03_23_101837) do +ActiveRecord::Schema.define(version: 2018_04_03_094135) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -366,6 +366,7 @@ ActiveRecord::Schema.define(version: 2018_03_23_101837) do t.string "gender" t.datetime "created_at" t.datetime "updated_at" + t.date "second_birthdate" t.index ["dossier_id"], name: "index_individuals_on_dossier_id" end diff --git a/lib/tasks/2018_04_03_type_individual_date.rake b/lib/tasks/2018_04_03_type_individual_date.rake new file mode 100644 index 000000000..b9af6d731 --- /dev/null +++ b/lib/tasks/2018_04_03_type_individual_date.rake @@ -0,0 +1,14 @@ +namespace :'2018_04_03_type_individual_date' do + task set: :environment do + Individual.all.each { |individual| save_birthdate_in_datetime_format(individual) } + end + + def save_birthdate_in_datetime_format(individual) + if individual.birthdate.present? + begin + individual.update_column(:second_birthdate, Date.parse(individual.birthdate)) + rescue + end + end + end +end diff --git a/spec/models/individual_spec.rb b/spec/models/individual_spec.rb index c101a1ca7..43d627139 100644 --- a/spec/models/individual_spec.rb +++ b/spec/models/individual_spec.rb @@ -23,6 +23,7 @@ describe Individual do it { expect(individual.valid?).to be true } it { expect(individual.birthdate).to eq("1980-11-12") } + it { expect(individual.second_birthdate).to eq(Date.new(1980, 11, 12)) } end context "and the format is ISO" do @@ -30,6 +31,7 @@ describe Individual do it { expect(individual.valid?).to be true } it { expect(individual.birthdate).to eq("1980-11-12") } + it { expect(individual.second_birthdate).to eq(Date.new(1980, 11, 12)) } end context "and the format is WTF" do @@ -37,6 +39,7 @@ describe Individual do it { expect(individual.valid?).to be false } it { expect(individual.birthdate).to eq("1980 1 12") } + it { expect(individual.second_birthdate).to be_nil } end end end