Sha256: 6d977c47ebc31354bdbaf7979c3bb8982a3cfbb719ada9e5998655f5063a6b6b

Contents?: true

Size: 794 Bytes

Versions: 5

Compression:

Stored size: 794 Bytes

Contents

module Avo
  module Fields
    class BooleanField < BaseField
      attr_reader :true_value
      attr_reader :false_value

      def initialize(name, **args, &block)
        @defaults = {
          partial_name: 'boolean-field',
          computable: true,
        }

        super(name, **args, &block)

        @true_value = args[:true_value].present? ? args[:true_value] : true
        @false_value = args[:false_value].present? ? args[:false_value] : false
      end

      def value
        resolve_attribute super
      end

      def resolve_attribute(value)
        value.present? ? value.in?(truthy_values) : value
      end

      def truthy_values
        ['true', '1', @true_value]
      end

      def falsy_values
        ['false', '0', @false_value]
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
avo-0.5.0.beta9 lib/avo/fields/boolean_field.rb
avo-0.5.0.beta8 lib/avo/fields/boolean_field.rb
avo-0.5.0.beta7 lib/avo/fields/boolean_field.rb
avo-0.5.0.beta6 lib/avo/fields/boolean_field.rb
avo-0.5.0.beta5 lib/avo/fields/boolean_field.rb