Sha256: 96141bda9a325a9d9d9f27597dd1fc3e012d891b143541346565469d1569206d

Contents?: true

Size: 1.22 KB

Versions: 3

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

module Decidim
  module ParticipatoryDocuments
    class SuggestionForm < Decidim::Form
      include Decidim::AttachmentAttributes
      include Decidim::HasUploadValidations

      attribute :body, String
      attribute :file

      validate :validate_single_field_presence
      validate :validate_body_length

      private

      def validate_body_length
        return if body.blank?

        errors.add(:body, I18n.t("activemodel.errors.models.suggestion.attributes.too_short", min_length: min_length)) if body.length < min_length
        errors.add(:body, I18n.t("activemodel.errors.models.suggestion.attributes.too_long", max_length: max_length)) if body.length > max_length
      end

      def validate_single_field_presence
        return unless body.blank? && file.blank?

        errors.add(:body, I18n.t("activemodel.errors.models.suggestion.attributes.not_blank"))
      end

      def min_length
        current_component.settings.min_suggestion_length || Decidim::ParticipatoryDocuments.config.min_suggestion_length
      end

      def max_length
        current_component.settings.max_suggestion_length || Decidim::ParticipatoryDocuments.config.max_suggestion_length
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
decidim-participatory_documents-0.2.2 app/forms/decidim/participatory_documents/suggestion_form.rb
decidim-participatory_documents-0.2.1 app/forms/decidim/participatory_documents/suggestion_form.rb
decidim-participatory_documents-0.2.0 app/forms/decidim/participatory_documents/suggestion_form.rb