Commit a32920024e1e99d544b91a5c8142e1eafaef8086
1 parent
5b598267
Exists in
master
and in
29 other branches
ActionItem393: must be able to set settings to false (only a nil value
implies using the informed default) git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1799 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
2 changed files
with
11 additions
and
2 deletions
Show diff stats
lib/acts_as_having_settings.rb
@@ -21,12 +21,13 @@ module ActsAsHavingSettings | @@ -21,12 +21,13 @@ module ActsAsHavingSettings | ||
21 | def settings_items(*names) | 21 | def settings_items(*names) |
22 | 22 | ||
23 | options = names.last.is_a?(Hash) ? names.pop : {} | 23 | options = names.last.is_a?(Hash) ? names.pop : {} |
24 | - default = options[:default] ? "|| #{options[:default].inspect}" : "" | 24 | + default = options[:default] ? options[:default].inspect : "val" |
25 | 25 | ||
26 | names.each do |setting| | 26 | names.each do |setting| |
27 | class_eval <<-CODE | 27 | class_eval <<-CODE |
28 | def #{setting} | 28 | def #{setting} |
29 | - send(self.class.settings_field)[:#{setting}] #{default} | 29 | + val = send(self.class.settings_field)[:#{setting}] |
30 | + val.nil? ? #{default} : val | ||
30 | end | 31 | end |
31 | def #{setting}=(value) | 32 | def #{setting}=(value) |
32 | send(self.class.settings_field)[:#{setting}] = value | 33 | send(self.class.settings_field)[:#{setting}] = value |
test/unit/acts_as_having_settings_test.rb
@@ -48,4 +48,12 @@ class ActsAsHavingSettingsTest < Test::Unit::TestCase | @@ -48,4 +48,12 @@ class ActsAsHavingSettingsTest < Test::Unit::TestCase | ||
48 | assert_equal 10, block_class.new.some_setting | 48 | assert_equal 10, block_class.new.some_setting |
49 | end | 49 | end |
50 | 50 | ||
51 | + should 'be able to set boolean attributes to false with a default of true' do | ||
52 | + klass = Class.new(Block) | ||
53 | + klass.settings_items :flag, :default => true | ||
54 | + obj = klass.new | ||
55 | + obj.flag = false | ||
56 | + assert_equal false, obj.flag | ||
57 | + end | ||
58 | + | ||
51 | end | 59 | end |