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 | 21 | def settings_items(*names) |
22 | 22 | |
23 | 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 | 26 | names.each do |setting| |
27 | 27 | class_eval <<-CODE |
28 | 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 | 31 | end |
31 | 32 | def #{setting}=(value) |
32 | 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 | 48 | assert_equal 10, block_class.new.some_setting |
49 | 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 | 59 | end | ... | ... |