diff options
author | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2012-05-19 06:16:10 -0700 |
---|---|---|
committer | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2012-05-19 06:16:10 -0700 |
commit | 8405aad6fb0a67367c9e2ce53346ae74927edf9c (patch) | |
tree | fc485960eea1d0c9a4d2d79a9d4685520bbdfe36 /activerecord/lib | |
parent | f20032fa15de8bc3d8d47993dbb64f759843120e (diff) | |
parent | 1596878c2a2187c92b8ea700e078961b11585f23 (diff) | |
download | rails-8405aad6fb0a67367c9e2ce53346ae74927edf9c.tar.gz rails-8405aad6fb0a67367c9e2ce53346ae74927edf9c.tar.bz2 rails-8405aad6fb0a67367c9e2ce53346ae74927edf9c.zip |
Merge pull request #4835 from pacoguzman/refactor_define_restrict_dependency_method
Refactor define_restrict_dependency_method using reflection
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/associations/builder/association.rb | 6 |
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 |