aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/reflection.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-12-27 05:41:23 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-12-27 05:41:23 +0000
commitb5ba377b784c58db7b7fb878862a550ae57beb95 (patch)
treefdd554b5d3a534290272271f8ae710fa1b30f61b /activerecord/lib/active_record/reflection.rb
parente567a5eb1afe1ac38f1da37f1c1e3922bbf79d2a (diff)
downloadrails-b5ba377b784c58db7b7fb878862a550ae57beb95.tar.gz
rails-b5ba377b784c58db7b7fb878862a550ae57beb95.tar.bz2
rails-b5ba377b784c58db7b7fb878862a550ae57beb95.zip
Added option to Base.reflection_of_all_associations to specify a specific association to scope the call. For example Base.reflection_of_all_associations(:has_many) [DHH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3357 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/lib/active_record/reflection.rb')
-rw-r--r--activerecord/lib/active_record/reflection.rb8
1 files changed, 5 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/reflection.rb b/activerecord/lib/active_record/reflection.rb
index 87a05086fc..9bac82f5ce 100644
--- a/activerecord/lib/active_record/reflection.rb
+++ b/activerecord/lib/active_record/reflection.rb
@@ -34,9 +34,11 @@ module ActiveRecord
reflections[aggregation].is_a?(AggregateReflection) ? reflections[aggregation] : nil
end
- # Returns an array of AssociationReflection objects for all the aggregations in the class.
- def reflect_on_all_associations
- reflections.values.select { |reflection| reflection.is_a?(AssociationReflection) }
+ # Returns an array of AssociationReflection objects for all the aggregations in the class. If you only want to reflect on a
+ # certain association type, pass in the symbol for that as the first parameter.
+ def reflect_on_all_associations(macro = nil)
+ association_reflections = reflections.values.select { |reflection| reflection.is_a?(AssociationReflection) }
+ macro ? association_reflections.select { |reflection| reflection.macro == macro } : association_reflections
end
# Returns the AssociationReflection object for the named +aggregation+ (use the symbol). Example: