diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-09-16 18:17:44 -0700 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-09-16 18:17:44 -0700 |
commit | eac9e0325c3f050b186328462798f20f5d2969a8 (patch) | |
tree | 3f667a6d1535e0dfee5009b9b368a0a5c3ea0e1c /activesupport/lib | |
parent | 82efe8943bf6ff12b597987506bf177d66609049 (diff) | |
parent | 1efe30ebcef2e6d3967742f9bcf4f6675a946d14 (diff) | |
download | rails-eac9e0325c3f050b186328462798f20f5d2969a8.tar.gz rails-eac9e0325c3f050b186328462798f20f5d2969a8.tar.bz2 rails-eac9e0325c3f050b186328462798f20f5d2969a8.zip |
Merge pull request #7645 from larrylv/configurable-defaults
Set up config_accessor with a default value by block
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/configurable.rb | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/activesupport/lib/active_support/configurable.rb b/activesupport/lib/active_support/configurable.rb index 307ae40398..15a5b98d56 100644 --- a/activesupport/lib/active_support/configurable.rb +++ b/activesupport/lib/active_support/configurable.rb @@ -39,7 +39,7 @@ module ActiveSupport # Allows you to add shortcut so that you don't have to refer to attribute # through config. Also look at the example for config to contrast. - # + # # Defines both class and instance config accessors. # # class User @@ -47,16 +47,16 @@ module ActiveSupport # config_accessor :allowed_access # end # - # User.allowed_access # => nil + # User.allowed_access # => nil # User.allowed_access = false - # User.allowed_access # => false - # + # User.allowed_access # => false + # # user = User.new # user.allowed_access # => false # user.allowed_access = true # user.allowed_access # => true # - # User.allowed_access # => false + # User.allowed_access # => false # # The attribute name must be a valid method name in Ruby. # @@ -91,7 +91,18 @@ module ActiveSupport # User.allowed_access # => false # # User.new.allowed_access = true # => NoMethodError - # User.new.allowed_access # => NoMethodError + # User.new.allowed_access # => NoMethodError + # + # Also you can pass a block to set up the attribute with a default value. + # + # class User + # include ActiveSupport::Configurable + # config_accessor :hair_colors do + # [:brown, :black, :blonde, :red] + # end + # end + # + # User.hair_colors # => [:brown, :black, :blonde, :red] def config_accessor(*names) options = names.extract_options! @@ -108,6 +119,7 @@ module ActiveSupport class_eval reader, __FILE__, reader_line unless options[:instance_reader] == false class_eval writer, __FILE__, writer_line unless options[:instance_writer] == false end + send("#{name}=", yield) if block_given? end end end |