aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/algebra/attributes/boolean.rb
blob: d69f2465df45360980f32c3d35084b272567f7e4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module Arel
  module Attributes
    class Boolean < Attribute
      def type_cast(value)
        case value
        when true, false then value
        # when nil            then options[:allow_nil] ? nil : false
        when nil         then false
        when 1           then true
        when 0           then false
        else
          case value.to_s.downcase.strip
          when 'true'  then true
          when 'false' then false
          else         raise typecast_error(value)
          end
        end
      end
    end
  end
end