Sha256: dcf7be6cc615cd7cce384a3213f94f97a4e5a708b9c9b5731b782903dfc27222

Contents?: true

Size: 818 Bytes

Versions: 32

Compression:

Stored size: 818 Bytes

Contents

# frozen_string_literal: true

module Phlexi
  module Form
    module Options
      module Required
        def required?
          options.fetch(:required) { options[: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 + association_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

32 entries across 32 versions & 1 rubygems

Version Path
phlexi-form-0.8.5 lib/phlexi/form/options/required.rb
phlexi-form-0.8.3 lib/phlexi/form/options/required.rb
phlexi-form-0.8.2 lib/phlexi/form/options/required.rb
phlexi-form-0.8.1 lib/phlexi/form/options/required.rb
phlexi-form-0.8.0 lib/phlexi/form/options/required.rb
phlexi-form-0.7.2 lib/phlexi/form/options/required.rb
phlexi-form-0.7.1 lib/phlexi/form/options/required.rb
phlexi-form-0.7.0 lib/phlexi/form/options/required.rb
phlexi-form-0.6.2 lib/phlexi/form/options/required.rb
phlexi-form-0.6.1 lib/phlexi/form/options/required.rb
phlexi-form-0.6.0 lib/phlexi/form/options/required.rb
phlexi-form-0.5.11 lib/phlexi/form/options/required.rb
phlexi-form-0.5.10 lib/phlexi/form/options/required.rb
phlexi-form-0.5.9 lib/phlexi/form/options/required.rb
phlexi-form-0.5.8 lib/phlexi/form/options/required.rb
phlexi-form-0.5.7 lib/phlexi/form/options/required.rb
phlexi-form-0.5.6 lib/phlexi/form/options/required.rb
phlexi-form-0.5.5 lib/phlexi/form/options/required.rb
phlexi-form-0.5.4 lib/phlexi/form/options/required.rb
phlexi-form-0.5.3 lib/phlexi/form/options/required.rb