# frozen_string_literal: true # Los sitios pueden tener muchos tipos de publicación pero solo uno es # el principal. Al usar un campo específico, podemos validar mejor su # presencia y modificación. # # El valor por defecto es 0 para poder crear la columna sin modificarla # después, pero la idea es que nunca haya ceros. class AddCanonicalDeployToSites < ActiveRecord::Migration[6.1] def up add_belongs_to :sites, :canonical_deploy, index: true # Si el sitio tenía un dominio alternativo, usar ese en lugar del # local, asumiendo que es el primero de todos los posibles. Site.find_each do |site| if site.name.end_with? '.' deploy = site.deploys.find_or_create_by(type: 'DeployAlternativeDomain', hostname: site.name.sub(/\.\z/, '')) end deploy ||= site.deploys.order(created_at: :asc).find_by_type('DeployAlternativeDomain') deploy ||= site.deploy_local site.update_columns canonical_deploy_id: deploy.id end end def down remove_belongs_to :sites, :canonical_deploy, index: true end end