From 700d01f04a6432e1fd5ba401de746809e8e2d05e Mon Sep 17 00:00:00 2001 From: Arnaud Levy <contact@arnaudlevy.com> Date: Tue, 18 Apr 2023 14:06:15 +0200 Subject: [PATCH] wip --- app/models/concerns/with_connections.rb | 15 +++++++++++---- .../communication/website/connections_test.rb | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/models/concerns/with_connections.rb b/app/models/concerns/with_connections.rb index 01c9e1755..16f4b84d2 100644 --- a/app/models/concerns/with_connections.rb +++ b/app/models/concerns/with_connections.rb @@ -15,9 +15,10 @@ module WithConnections # Ce serait super de faire la ligne ci-dessous, mais Rails ne sait pas faire ça avec un objet polymorphe (direct_source) # has_many :direct_sources, through: :connections - after_save :sync_connections - after_touch :sync_connections - after_save :sync_obsolete_dependencies + after_save :sync_connections + after_touch :sync_connections + after_save :sync_obsolete_dependencies + after_destroy :destroy_obsolete_connections end def for_website?(website) @@ -47,7 +48,6 @@ module WithConnections : reference.direct_sources # Récursivité sur les références end - def sync_connections direct_sources.each do |direct_source| direct_source.website.connect self, direct_source @@ -55,6 +55,13 @@ module WithConnections end end + # La suppression d'un objet indirect déclenche le recalcul des connexions de tous les objets directs + def destroy_obsolete_connections + direct_sources.each do |direct_source| + # TODO + end + end + def sync_obsolete_dependencies # TODO: pas ouf de passer par le site, ce serait plus léger en calcul de faire une analyse plus étroite websites.each do |website| diff --git a/test/models/communication/website/connections_test.rb b/test/models/communication/website/connections_test.rb index 845a25096..497432054 100644 --- a/test/models/communication/website/connections_test.rb +++ b/test/models/communication/website/connections_test.rb @@ -50,7 +50,7 @@ class Communication::Website::ConnectionsTest < ActiveSupport::TestCase # On supprime le bloc qui contient PA : -1 (mais devrait être -2 parce que PA devrait être supprimé aussi, c'est le problème du saumon) # https://developers.osuny.org/docs/admin/communication/sites-web/dependencies/iteration-4/#olivia-et-le-saumon-de-schr%C3%B6dinger - assert_difference -> { Communication::Website::Connection.count } => -1 do + assert_difference -> { Communication::Website::Connection.count } => -2 do page.blocks.find_by(position: 2).destroy end end -- GitLab