Sha256: d2034fe5520730ded37d5f465e29873bcf34391efeff896691ebbce1c73903b5

Contents?: true

Size: 895 Bytes

Versions: 1

Compression:

Stored size: 895 Bytes

Contents

# frozen_string_literal: true

module Phlexi
  module Form
    module FieldOptions
      module Collection
        def collection(collection = nil)
          if collection.nil?
            options[:collection] = options.fetch(:collection) { infer_collection }
          else
            options[:collection] = collection
            self
          end
        end

        private

        def infer_collection
          if has_validators?
            inclusion_validator = find_inclusion_validator
            collection_value_from(inclusion_validator)
          end
        end

        def collection_value_from(inclusion_validator)
          if inclusion_validator
            inclusion_validator.options[:in] || inclusion_validator.options[:within]
          end
        end

        def find_inclusion_validator
          find_validator(:inclusion)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
phlexi-form-0.2.0 lib/phlexi/form/field_options/collection.rb