module AttributeBoolean::ClassMethods
Public Instance Methods
attr_boolean(*args)
click to toggle source
# File lib/attribute_boolean.rb, line 6 def attr_boolean(*args) options = if args.last.kind_of?(Hash) args.pop else {} end default_value = if options.has_key?(:default) !! options[:default] elsif options.has_key?("default") !! options["default"] else false end false_values = if options.has_key?(:false_values) options[:false_values] elsif options.has_key?("false_values") options["false_values"] end args.each do |name| ivar = "@#{ name }" define_method("#{ name }?") do value = instance_variable_get(ivar) if value == nil default_value else !! value end end alias_method "#{ name }", "#{ name }?" define_method("#{ name }=") do |value| is_true = if value == nil default_value elsif false_values ! false_values.include?(value.to_s) else ! AttributeBoolean.false_values.include?(value.to_s) end instance_variable_set(ivar, is_true) end end end