diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2005-02-27 17:18:35 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2005-02-27 17:18:35 +0000 |
commit | 85bb292a8fa95d9685b42b8a131d1f97aa34491c (patch) | |
tree | 1071f84cab51c914f7181ef7d2a1c911cf30991c /activerecord/lib | |
parent | ea26abeed820d511a8127f4edf06060e3dc129dc (diff) | |
download | rails-85bb292a8fa95d9685b42b8a131d1f97aa34491c.tar.gz rails-85bb292a8fa95d9685b42b8a131d1f97aa34491c.tar.bz2 rails-85bb292a8fa95d9685b42b8a131d1f97aa34491c.zip |
Added MacroReflection#macro which will return a symbol describing the macro used (like :composed_of or :has_many) #718, #248 [james@slashetc.com]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@805 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/reflection.rb | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/reflection.rb b/activerecord/lib/active_record/reflection.rb index 036200a200..55a446ff57 100644 --- a/activerecord/lib/active_record/reflection.rb +++ b/activerecord/lib/active_record/reflection.rb @@ -10,7 +10,7 @@ module ActiveRecord def composed_of_with_reflection(part_id, options = {}) composed_of_without_reflection(part_id, options) - write_inheritable_array "aggregations", [ AggregateReflection.new(part_id, options, self) ] + write_inheritable_array "aggregations", [ AggregateReflection.new(:composed_of, part_id, options, self) ] end alias_method :composed_of, :composed_of_with_reflection @@ -24,7 +24,7 @@ module ActiveRecord def #{association_type}_with_reflection(association_id, options = {}) #{association_type}_without_reflection(association_id, options) - write_inheritable_array "associations", [ AssociationReflection.new(association_id, options, self) ] + write_inheritable_array "associations", [ AssociationReflection.new(:#{association_type}, association_id, options, self) ] end alias_method :#{association_type}, :#{association_type}_with_reflection @@ -67,8 +67,8 @@ module ActiveRecord # those classes. Objects of AggregateReflection and AssociationReflection are returned by the Reflection::ClassMethods. class MacroReflection attr_reader :active_record - def initialize(name, options, active_record) - @name, @options, @active_record = name, options, active_record + def initialize(macro, name, options, active_record) + @macro, @name, @options, @active_record = macro, name, options, active_record end # Returns the name of the macro, so it would return :balance for "composed_of :balance, :class_name => 'Money'" or @@ -77,6 +77,12 @@ module ActiveRecord @name end + # Returns the name of the macro, so it would return :composed_of for + # "composed_of :balance, :class_name => 'Money'" or :has_many for "has_many :clients". + def macro + @macro + end + # Returns the hash of options used for the macro, so it would return { :class_name => "Money" } for # "composed_of :balance, :class_name => 'Money'" or {} for "has_many :clients". def options |