Sha256: b129687bc35a00bee078d859e776c14edb0bc2c09fe42cd26d3188ea8a2bb4ce

Contents?: true

Size: 1.31 KB

Versions: 30

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true

module Decidim
  # Areas are used in Assemblies to help users know which is
  # the Area of a participatory space.
  class Area < ApplicationRecord
    include Traceable
    include Loggable
    include Decidim::TranslatableResource

    translatable_fields :name

    belongs_to :organization,
               foreign_key: "decidim_organization_id",
               class_name: "Decidim::Organization",
               inverse_of: :areas

    belongs_to :area_type,
               class_name: "Decidim::AreaType",
               inverse_of: :areas,
               optional: true

    validates :name, presence: true, uniqueness: { scope: [:organization, :area_type] }

    before_destroy :abort_if_dependencies

    def self.log_presenter_class_for(_log)
      Decidim::AdminLog::AreaPresenter
    end

    def translated_name
      Decidim::AreaPresenter.new(self).translated_name
    end

    def has_dependencies?
      Decidim.participatory_space_registry.manifests.any? do |manifest|
        manifest
          .participatory_spaces
          .call(organization)
          .any? do |space|
          space.respond_to?(:area) && space.decidim_area_id == id
        end
      end
    end

    # used on before_destroy
    def abort_if_dependencies
      throw(:abort) if has_dependencies?
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
decidim-core-0.30.0.rc3 app/models/decidim/area.rb
decidim-core-0.30.0.rc2 app/models/decidim/area.rb
decidim-core-0.30.0.rc1 app/models/decidim/area.rb
decidim-core-0.29.2 app/models/decidim/area.rb
decidim-core-0.28.5 app/models/decidim/area.rb
decidim-core-0.29.1 app/models/decidim/area.rb
decidim-core-0.28.4 app/models/decidim/area.rb
decidim-core-0.27.9 app/models/decidim/area.rb
decidim-core-0.29.0 app/models/decidim/area.rb
decidim-core-0.28.3 app/models/decidim/area.rb
decidim-core-0.27.8 app/models/decidim/area.rb
decidim-core-0.29.0.rc4 app/models/decidim/area.rb
decidim-core-0.29.0.rc3 app/models/decidim/area.rb
decidim-core-0.29.0.rc2 app/models/decidim/area.rb
decidim-core-0.29.0.rc1 app/models/decidim/area.rb
decidim-core-0.28.2 app/models/decidim/area.rb
decidim-core-0.27.7 app/models/decidim/area.rb
decidim-core-0.28.1 app/models/decidim/area.rb
decidim-core-0.27.6 app/models/decidim/area.rb
decidim-core-0.28.0 app/models/decidim/area.rb