Commit a32920024e1e99d544b91a5c8142e1eafaef8086
1 parent
5b598267
Exists in
master
and in
23 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 | ... | ... |