Sha256: 808eb6264ac861cb33bf911c91a9faf9b6250b921982af3e7c1a77977386c468

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

module Decidim
  module Lausanne
    module Budgets
      # The data store for a budget in the Decidim::Lausanne::Budgets component.
      class LausanneBudget < ApplicationRecord
        include Decidim::Resourceable
        include Decidim::ScopableResource
        include Decidim::HasComponent
        include Decidim::Searchable
        include Traceable
        include Loggable

        self.table_name = :loz_budgets_budgets
        component_manifest_name "lausanne_budgets"

        has_many :projects, foreign_key: "loz_budgets_budget_id", class_name: "Decidim::Lausanne::Budgets::Project", inverse_of: :budget, dependent: :destroy
        has_many :orders, foreign_key: "loz_budgets_budget_id", class_name: "Decidim::Lausanne::Budgets::Order", inverse_of: :budget, dependent: :destroy

        delegate :participatory_space, :manifest, :settings, to: :component

        searchable_fields({
                            participatory_space: { component: :participatory_space },
                            A: :title,
                            D: [:description, :total_budget]
                          },
                          index_on_create: ->(budget) { budget.visible? },
                          index_on_update: ->(budget) { budget.visible? })

        def self.log_presenter_class_for(_log)
          Decidim::Lausanne::Budgets::AdminLog::BudgetPresenter
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
decidim-lausanne-budgets-0.1.0 app/models/decidim/lausanne/budgets/lausanne_budget.rb