From a32920024e1e99d544b91a5c8142e1eafaef8086 Mon Sep 17 00:00:00 2001 From: AntonioTerceiro Date: Thu, 15 May 2008 20:11:31 +0000 Subject: [PATCH] ActionItem393: must be able to set settings to false (only a nil value implies using the informed default) --- lib/acts_as_having_settings.rb | 5 +++-- test/unit/acts_as_having_settings_test.rb | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/acts_as_having_settings.rb b/lib/acts_as_having_settings.rb index 89466b3..7646b48 100644 --- a/lib/acts_as_having_settings.rb +++ b/lib/acts_as_having_settings.rb @@ -21,12 +21,13 @@ module ActsAsHavingSettings def settings_items(*names) options = names.last.is_a?(Hash) ? names.pop : {} - default = options[:default] ? "|| #{options[:default].inspect}" : "" + default = options[:default] ? options[:default].inspect : "val" names.each do |setting| class_eval <<-CODE def #{setting} - send(self.class.settings_field)[:#{setting}] #{default} + val = send(self.class.settings_field)[:#{setting}] + val.nil? ? #{default} : val end def #{setting}=(value) send(self.class.settings_field)[:#{setting}] = value diff --git a/test/unit/acts_as_having_settings_test.rb b/test/unit/acts_as_having_settings_test.rb index 203d9d6..ae6605a 100644 --- a/test/unit/acts_as_having_settings_test.rb +++ b/test/unit/acts_as_having_settings_test.rb @@ -48,4 +48,12 @@ class ActsAsHavingSettingsTest < Test::Unit::TestCase assert_equal 10, block_class.new.some_setting end + should 'be able to set boolean attributes to false with a default of true' do + klass = Class.new(Block) + klass.settings_items :flag, :default => true + obj = klass.new + obj.flag = false + assert_equal false, obj.flag + end + end -- libgit2 0.21.2