Sha256: f9dc6ade5029fa916d0448c81060e440d1ea2d04febccd88347a52d290b10982

Contents?: true

Size: 811 Bytes

Versions: 2

Compression:

Stored size: 811 Bytes

Contents

# frozen_string_literal: true

module Phlexi
  module Form
    module FieldOptions
      module Required
        def required?
          options[:required] = options.fetch(:required) { calculate_required }
        end

        def required!(required = true)
          options[:required] = required
          self
        end

        private

        def calculate_required
          if has_validators?
            required_by_validators?
          else
            required_by_default?
          end
        end

        def required_by_validators?
          (attribute_validators + reflection_validators).any? { |v| v.kind == :presence && valid_validator?(v) }
        end

        def required_by_default?
          # TODO: get this from configuration
          false
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
phlexi-form-0.3.0.rc1 lib/phlexi/form/field_options/required.rb
phlexi-form-0.2.0 lib/phlexi/form/field_options/required.rb