"instance_methods" includes public and protected

This commit is contained in:
Aaron Patterson 2010-10-18 17:57:19 -07:00
parent de3603c255
commit 1856e975c3
1 changed files with 1 additions and 1 deletions

View File

@ -18,7 +18,7 @@ module ActiveRecord
# method is defined by Active Record though. # method is defined by Active Record though.
def instance_method_already_implemented?(method_name) def instance_method_already_implemented?(method_name)
method_name = method_name.to_s method_name = method_name.to_s
@_defined_class_methods ||= ancestors.first(ancestors.index(ActiveRecord::Base)).sum([]) { |m| m.public_instance_methods(false) | m.private_instance_methods(false) | m.protected_instance_methods(false) }.map {|m| m.to_s }.to_set @_defined_class_methods ||= ancestors.first(ancestors.index(ActiveRecord::Base)).sum([]) { |m| m.instance_methods(false) | m.private_instance_methods(false) }.map {|m| m.to_s }.to_set
@@_defined_activerecord_methods ||= defined_activerecord_methods @@_defined_activerecord_methods ||= defined_activerecord_methods
raise DangerousAttributeError, "#{method_name} is defined by ActiveRecord" if @@_defined_activerecord_methods.include?(method_name) raise DangerousAttributeError, "#{method_name} is defined by ActiveRecord" if @@_defined_activerecord_methods.include?(method_name)
@_defined_class_methods.include?(method_name) @_defined_class_methods.include?(method_name)