commit
2b500e52c7
4 changed files with 34 additions and 10 deletions
|
@ -1,6 +1,7 @@
|
||||||
class Champ < ApplicationRecord
|
class Champ < ApplicationRecord
|
||||||
belongs_to :dossier, touch: true
|
belongs_to :dossier, touch: true
|
||||||
belongs_to :type_de_champ, inverse_of: :champ
|
belongs_to :type_de_champ, inverse_of: :champ
|
||||||
|
belongs_to :parent, class_name: 'Champ'
|
||||||
has_many :commentaires
|
has_many :commentaires
|
||||||
has_one_attached :piece_justificative_file
|
has_one_attached :piece_justificative_file
|
||||||
has_one :virus_scan
|
has_one :virus_scan
|
||||||
|
@ -18,6 +19,8 @@ class Champ < ApplicationRecord
|
||||||
scope :ordered, -> { includes(:type_de_champ).order(:row, 'types_de_champ.order_place') }
|
scope :ordered, -> { includes(:type_de_champ).order(:row, 'types_de_champ.order_place') }
|
||||||
scope :root, -> { where(parent_id: nil) }
|
scope :root, -> { where(parent_id: nil) }
|
||||||
|
|
||||||
|
before_create :set_dossier_id, if: :needs_dossier_id?
|
||||||
|
|
||||||
def public?
|
def public?
|
||||||
!private?
|
!private?
|
||||||
end
|
end
|
||||||
|
@ -54,4 +57,14 @@ class Champ < ApplicationRecord
|
||||||
def main_value_name
|
def main_value_name
|
||||||
:value
|
:value
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def needs_dossier_id?
|
||||||
|
!dossier_id && parent_id
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_dossier_id
|
||||||
|
self.dossier_id = parent.dossier_id
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
class Champs::RepetitionChamp < Champ
|
class Champs::RepetitionChamp < Champ
|
||||||
before_save :setup_dossier
|
|
||||||
|
|
||||||
has_many :champs, -> { ordered }, foreign_key: :parent_id, dependent: :destroy
|
has_many :champs, -> { ordered }, foreign_key: :parent_id, dependent: :destroy
|
||||||
|
|
||||||
accepts_nested_attributes_for :champs, allow_destroy: true
|
accepts_nested_attributes_for :champs, allow_destroy: true
|
||||||
|
@ -22,12 +20,4 @@ class Champs::RepetitionChamp < Champ
|
||||||
def search_terms
|
def search_terms
|
||||||
# The user cannot enter any information here so it doesn’t make much sense to search
|
# The user cannot enter any information here so it doesn’t make much sense to search
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def setup_dossier
|
|
||||||
champs.each do |champ|
|
|
||||||
champ.dossier = dossier
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
namespace :after_party do
|
||||||
|
desc 'Deployment task: add_missing_dossier_id_to_repetitions'
|
||||||
|
task add_missing_dossier_id_to_repetitions: :environment do
|
||||||
|
puts "Running deploy task 'add_missing_dossier_id_to_repetitions'"
|
||||||
|
|
||||||
|
champs = Champ.where(dossier_id: nil)
|
||||||
|
progress = ProgressReport.new(champs.count)
|
||||||
|
champs.find_each do |champ|
|
||||||
|
champ.update_column(:dossier_id, champ.parent.dossier_id)
|
||||||
|
progress.inc
|
||||||
|
end
|
||||||
|
progress.finish
|
||||||
|
|
||||||
|
# Update task as completed. If you remove the line below, the task will
|
||||||
|
# run with every deploy (or every time you call after_party:run).
|
||||||
|
AfterParty::TaskRecord.create version: '20190418144354'
|
||||||
|
end
|
||||||
|
end
|
|
@ -406,6 +406,7 @@ describe Champ do
|
||||||
let(:champ_text) { create(:champ_text, row: 0) }
|
let(:champ_text) { create(:champ_text, row: 0) }
|
||||||
let(:champ_integer_number) { create(:champ_integer_number, row: 0) }
|
let(:champ_integer_number) { create(:champ_integer_number, row: 0) }
|
||||||
let(:champ_text_attrs) { attributes_for(:champ_text, row: 1) }
|
let(:champ_text_attrs) { attributes_for(:champ_text, row: 1) }
|
||||||
|
let(:champ_text_row_1) { create(:champ_text, row: 1, parent: champ) }
|
||||||
|
|
||||||
it "associates nested champs to the parent dossier" do
|
it "associates nested champs to the parent dossier" do
|
||||||
expect(champ.rows.size).to eq(0)
|
expect(champ.rows.size).to eq(0)
|
||||||
|
@ -441,6 +442,8 @@ describe Champ do
|
||||||
expect(row.second).to eq(champ_text)
|
expect(row.second).to eq(champ_text)
|
||||||
|
|
||||||
expect(champ.rows.size).to eq(2)
|
expect(champ.rows.size).to eq(2)
|
||||||
|
|
||||||
|
expect(champ_text_row_1.dossier_id).to eq(champ.dossier_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue