diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2009-05-20 16:49:21 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2009-05-20 18:12:44 -0700 |
commit | 68398838544a778244e6028f2c30deb7313ea0b2 (patch) | |
tree | d37102f36827549733ac8f241fd965003d7eedd8 /activesupport/lib/active_support/core_ext/object/with_options.rb | |
parent | 429a00f225b24b938575ed40d11fa07987e12a6f (diff) | |
download | rails-68398838544a778244e6028f2c30deb7313ea0b2.tar.gz rails-68398838544a778244e6028f2c30deb7313ea0b2.tar.bz2 rails-68398838544a778244e6028f2c30deb7313ea0b2.zip |
Break up misc Object extensions
Diffstat (limited to 'activesupport/lib/active_support/core_ext/object/with_options.rb')
-rw-r--r-- | activesupport/lib/active_support/core_ext/object/with_options.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/object/with_options.rb b/activesupport/lib/active_support/core_ext/object/with_options.rb new file mode 100644 index 0000000000..dd38b7d261 --- /dev/null +++ b/activesupport/lib/active_support/core_ext/object/with_options.rb @@ -0,0 +1,24 @@ +class Object + # An elegant way to factor duplication out of options passed to a series of + # method calls. Each method called in the block, with the block variable as + # the receiver, will have its options merged with the default +options+ hash + # provided. Each method called on the block variable must take an options + # hash as its final argument. + # + # with_options :order => 'created_at', :class_name => 'Comment' do |post| + # post.has_many :comments, :conditions => ['approved = ?', true], :dependent => :delete_all + # post.has_many :unapproved_comments, :conditions => ['approved = ?', false] + # post.has_many :all_comments + # end + # + # Can also be used with an explicit receiver: + # + # map.with_options :controller => "people" do |people| + # people.connect "/people", :action => "index" + # people.connect "/people/:id", :action => "show" + # end + # + def with_options(options) + yield ActiveSupport::OptionMerger.new(self, options) + end +end |