mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
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
This commit is contained in:
parent
e567a5eb1a
commit
b5ba377b78
3 changed files with 13 additions and 3 deletions
|
@ -1,5 +1,7 @@
|
|||
*SVN*
|
||||
|
||||
* 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]
|
||||
|
||||
* Added ActiveRecord::SchemaDumper.ignore_tables which tells SchemaDumper which tables to ignore. Useful for tables with funky column like the ones required for tsearch2. [TobiasLuetke]
|
||||
|
||||
* SchemaDumper now doesn't fail anymore when there are unknown column types in the schema. Instead the table is ignored and a Comment is left in the schema.rb. [TobiasLuetke]
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -93,4 +93,10 @@ class ReflectionTest < Test::Unit::TestCase
|
|||
assert_equal MyApplication::Business::Client, MyApplication::Business::Firm.reflect_on_association(:clients_of_firm).klass
|
||||
assert_equal MyApplication::Business::Firm, MyApplication::Billing::Account.reflect_on_association(:firm).klass
|
||||
end
|
||||
|
||||
def test_reflection_of_all_associations
|
||||
assert_equal 12, Firm.reflect_on_all_associations.size
|
||||
assert_equal 11, Firm.reflect_on_all_associations(:has_many).size
|
||||
assert_equal 1, Firm.reflect_on_all_associations(:has_one).size
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue