aboutsummaryrefslogblamecommitdiffstats
path: root/activerecord/lib/active_record/types/number.rb
blob: cfbe87757544708e18c34f399f0a5112200a103b (plain) (tree)





























                                                 
module ActiveRecord
  module Type
    class Number < Object

      def boolean(value)
        value = cast(value)
        !(value.nil? || value.zero?)
      end

      def precast(value)
        convert_number_column_value(value)
      end

      private

      def convert_number_column_value(value)
        if value == false
          0
        elsif value == true
          1
        elsif value.is_a?(String) && value.blank?
          nil
        else
          value
        end
      end

    end
  end
end