aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2014-07-21 17:50:31 -0400
committereileencodes <eileencodes@gmail.com>2014-07-30 20:16:27 -0400
commit8d7dea766e7a5371dab09bf4c819ff1fc28ffa31 (patch)
tree6f24208eddb58a78b13a14f2dd9508ab2f5c73a2 /activerecord/lib
parent20a277c9a2a2f1bb0ff2a77d52f7e9590dbae8ac (diff)
downloadrails-8d7dea766e7a5371dab09bf4c819ff1fc28ffa31.tar.gz
rails-8d7dea766e7a5371dab09bf4c819ff1fc28ffa31.tar.bz2
rails-8d7dea766e7a5371dab09bf4c819ff1fc28ffa31.zip
Redefine macro checks for reflections
Now that we define the macro on the reflection type we no longer need to check `macro == :what` on each type for `belongs_to?` or `has_one?` etc. These now default to false unless it's defined in the reflection class. Reuse existing belongs_to? method to check macros We don't need to do `:belongs_to == macro` anymore becasue we have a `belongs_to?` method. I didn't find this being used anywhere for `has_one?` or `collection?` since they were already fixed.
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/associations/has_many_association.rb2
-rw-r--r--activerecord/lib/active_record/counter_cache.rb2
-rw-r--r--activerecord/lib/active_record/reflection.rb16
3 files changed, 9 insertions, 11 deletions
diff --git a/activerecord/lib/active_record/associations/has_many_association.rb b/activerecord/lib/active_record/associations/has_many_association.rb
index 2a97d0ed31..79c3d2b0f5 100644
--- a/activerecord/lib/active_record/associations/has_many_association.rb
+++ b/activerecord/lib/active_record/associations/has_many_association.rb
@@ -124,7 +124,7 @@ module ActiveRecord
def inverse_updates_counter_named?(counter_name, reflection = reflection())
reflection.klass._reflections.values.any? { |inverse_reflection|
- :belongs_to == inverse_reflection.macro &&
+ inverse_reflection.belongs_to? &&
inverse_reflection.counter_cache_column == counter_name
}
end
diff --git a/activerecord/lib/active_record/counter_cache.rb b/activerecord/lib/active_record/counter_cache.rb
index a33c7c64a7..f0b6afc4b4 100644
--- a/activerecord/lib/active_record/counter_cache.rb
+++ b/activerecord/lib/active_record/counter_cache.rb
@@ -34,7 +34,7 @@ module ActiveRecord
foreign_key = has_many_association.foreign_key.to_s
child_class = has_many_association.klass
- reflection = child_class._reflections.values.find { |e| :belongs_to == e.macro && e.foreign_key.to_s == foreign_key && e.options[:counter_cache].present? }
+ reflection = child_class._reflections.values.find { |e| e.belongs_to? && e.foreign_key.to_s == foreign_key && e.options[:counter_cache].present? }
counter_name = reflection.counter_cache_column
stmt = unscoped.where(arel_table[primary_key].eq(object.id)).arel.compile_update({
diff --git a/activerecord/lib/active_record/reflection.rb b/activerecord/lib/active_record/reflection.rb
index 1672128aa3..21da011e8a 100644
--- a/activerecord/lib/active_record/reflection.rb
+++ b/activerecord/lib/active_record/reflection.rb
@@ -431,14 +431,10 @@ Joining, Preloading and eager loading of these associations is deprecated and wi
end
# Returns +true+ if +self+ is a +belongs_to+ reflection.
- def belongs_to?
- macro == :belongs_to
- end
+ def belongs_to?; false; end
# Returns +true+ if +self+ is a +has_one+ reflection.
- def has_one?
- macro == :has_one
- end
+ def has_one?; false; end
def association_class
case macro
@@ -585,9 +581,7 @@ Joining, Preloading and eager loading of these associations is deprecated and wi
def macro; :has_many; end
- def collection?
- true
- end
+ def collection?; true; end
end
class HasOneReflection < AssociationReflection #:nodoc:
@@ -596,6 +590,8 @@ Joining, Preloading and eager loading of these associations is deprecated and wi
end
def macro; :has_one; end
+
+ def has_one?; true; end
end
class BelongsToReflection < AssociationReflection #:nodoc:
@@ -604,6 +600,8 @@ Joining, Preloading and eager loading of these associations is deprecated and wi
end
def macro; :belongs_to; end
+
+ def belongs_to?; true; end
end
class HasAndBelongsToManyReflection < AssociationReflection #:nodoc: