aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations
diff options
context:
space:
mode:
authorPaco Guzman <pacoguzmanp@gmail.com>2012-02-01 21:47:33 +0100
committerPaco Guzman <pacoguzmanp@gmail.com>2012-02-01 21:47:33 +0100
commit1596878c2a2187c92b8ea700e078961b11585f23 (patch)
treef9c19bf27ad8346b25cb608f7a00b469310a42a2 /activerecord/lib/active_record/associations
parentab58c5e6640636b7d3ea7f50edfa368cc75fc56b (diff)
downloadrails-1596878c2a2187c92b8ea700e078961b11585f23.tar.gz
rails-1596878c2a2187c92b8ea700e078961b11585f23.tar.bz2
rails-1596878c2a2187c92b8ea700e078961b11585f23.zip
Refactor define_restrict_dependency_method using reflection
Diffstat (limited to 'activerecord/lib/active_record/associations')
-rw-r--r--activerecord/lib/active_record/associations/builder/association.rb6
1 files changed, 3 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/associations/builder/association.rb b/activerecord/lib/active_record/associations/builder/association.rb
index 2059d8acdf..9a6896dd55 100644
--- a/activerecord/lib/active_record/associations/builder/association.rb
+++ b/activerecord/lib/active_record/associations/builder/association.rb
@@ -69,12 +69,12 @@ module ActiveRecord::Associations::Builder
def define_restrict_dependency_method
name = self.name
mixin.redefine_method(dependency_method_name) do
- # has_many or has_one associations
- if send(name).respond_to?(:exists?) ? send(name).exists? : !send(name).nil?
+ has_one_macro = association(name).reflection.macro == :has_one
+ if has_one_macro ? !send(name).nil? : send(name).exists?
if dependent_restrict_raises?
raise ActiveRecord::DeleteRestrictionError.new(name)
else
- key = association(name).reflection.macro == :has_one ? "one" : "many"
+ key = has_one_macro ? "one" : "many"
errors.add(:base, :"restrict_dependent_destroy.#{key}",
:record => self.class.human_attribute_name(name).downcase)
return false