diff --git a/app/models/communication/website/with_connected_objects.rb b/app/models/communication/website/with_connected_objects.rb index 2c3c783fcc913d3ad7dfd0f36f54ab884b711440..82ad076edd93f7edb2aa68a50a25306b09bafdc4 100644 --- a/app/models/communication/website/with_connected_objects.rb +++ b/app/models/communication/website/with_connected_objects.rb @@ -107,6 +107,8 @@ module Communication::Website::WithConnectedObjects # On ne connecte pas le site à lui-même !indirect_object.is_a?(Communication::Website) && # On ne connecte pas les objets directs (en principe ça n'arrive pas) - !indirect_object.try(:is_direct_object?) + !indirect_object.try(:is_direct_object?) && + # On ne connecte pas des objets qui ne sont pas issus de modèles ActiveRecord (comme les composants des blocs) + indirect_object.is_a?(ActiveRecord::Base) end end \ No newline at end of file diff --git a/app/models/concerns/as_indirect_object.rb b/app/models/concerns/as_indirect_object.rb index 7e4ab7a51c3c8a95e9e5a258a5a99bc77e6c921a..58859b131206621c37347f3129045ebce9c180d8 100644 --- a/app/models/concerns/as_indirect_object.rb +++ b/app/models/concerns/as_indirect_object.rb @@ -54,6 +54,8 @@ module AsIndirectObject protected def direct_sources_from_reference(reference) + # Early-return to ignore contexts without connections (ex: extranets) + return [] unless reference.respond_to?(:is_direct_object?) reference.is_direct_object? ? [reference] # Récupération de la connexion directe : reference.direct_sources_from_existing_connections # Récupération via les connexions des références end diff --git a/lib/tasks/app.rake b/lib/tasks/app.rake index e0bca1fa1395dc26c897e8fe67da560f5af506d3..18181a021cf65e4ba837804f8938e170eef20a19 100644 --- a/lib/tasks/app.rake +++ b/lib/tasks/app.rake @@ -10,16 +10,7 @@ namespace :app do task fix: :environment do ContentMigration.run Communication::Website.find_each do |website| - # Rebuild connections - website.pages.find_each(&:connect_dependencies) - website.posts.find_each(&:connect_dependencies) - website.categories.find_each(&:connect_dependencies) - website.menus.find_each(&:connect_dependencies) - website.connect(website.about, website) if website.about.present? - - website.destroy_obsolete_connections - website.sync_with_git - website.destroy_obsolete_git_files + MigrateWebsiteConnectionsJob.perform_later(website.id) end end