module ActiveRecord
  module OracleEnhanced
    module Type
      class Boolean < ActiveModel::Type::Boolean # :nodoc:

        private

        def cast_value(value)
          # Kind of adding 'n' and 'N' to  `FALSE_VALUES`
          if ['n', 'N'].include?(value)
            false
          else
            super
          end
        end

      end
    end
  end
end

module ActiveRecord
  module OracleEnhanced
    module Type
      class Boolean < ActiveModel::Type::Boolean # :nodoc:
        # Add 'N' as FALSE_VALUES
        FALSE_VALUES = [false, 0, '0', 'f', 'F', 'false', 'FALSE', 'off', 'OFF', 'n', 'N'].to_set

        private

        def cast_value(value)
          # Not calling super to use its own `FALSE_VALUES`
          if value == ''
            nil
          else
            !FALSE_VALUES.include?(value)
          end
        end

      end
    end
  end
end

--- 
+++ 
@@ -2,17 +2,15 @@
   module OracleEnhanced
     module Type
       class Boolean < ActiveModel::Type::Boolean # :nodoc:
-        # Add 'N' as FALSE_VALUES
-        FALSE_VALUES = [false, 0, '0', 'f', 'F', 'false', 'FALSE', 'off', 'OFF', 'n', 'N'].to_set
 
         private
 
         def cast_value(value)
-          # Not calling super to use its own `FALSE_VALUES`
-          if value == ''
-            nil
+          # Kind of adding 'n' and 'N' to  `FALSE_VALUES`
+          if ['n', 'N'].include?(value)
+            false
           else
-            !FALSE_VALUES.include?(value)
+            super
           end
         end
 
Refactor Boolean type by removing duplicate code

Oracle enhanced adapter also needs to handle 'n' and 'N' as `FALSE`.
