Skip to content

Instantly share code, notes, and snippets.

@arthurfranca
Forked from equivalent/README.md
Created November 7, 2013 18:12
Show Gist options
  • Save arthurfranca/7359244 to your computer and use it in GitHub Desktop.
Save arthurfranca/7359244 to your computer and use it in GitHub Desktop.
module StringToBoolean
def to_bool
return true if self == true || self =~ (/^(true|t|yes|y|1)$/i)
return false if self == false || self.blank? || self =~ (/^(false|f|no|n|0)$/i)
raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
end
end
class String; include StringToBoolean; end
module BooleanToBoolean
def to_bool;return self; end
end
class TrueClass; include BooleanToBoolean; end
class FalseClass; include BooleanToBoolean; end
# However there is also better practice to do it by using
ActiveRecord::ConnectionAdapters::Column.value_to_boolean( something )
2.0.0dev :019 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean('1')
=> true
2.0.0dev :020 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean('0')
=> false
2.0.0dev :021 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean('true')
=> true
2.0.0dev :022 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean('false')
=> false
2.0.0dev :023 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean('nil')
=> false
2.0.0dev :024 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean('t')
=> true
2.0.0dev :025 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean('cat')
=> false
2.0.0dev :026 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean(true)
=> true
2.0.0dev :027 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean(false)
2.0.0dev :035 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean(1)
=> true
2.0.0dev :036 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean(2)
=> false
2.0.0dev :037 > ActiveRecord::ConnectionAdapters::Column.value_to_boolean(0)
=> false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment