aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2011-09-13 23:52:38 +0100
committerJon Leighton <j@jonathanleighton.com>2011-09-14 00:00:37 +0100
commit3b8a7cf2a7b2ffce671ca7f655de736c1054edbc (patch)
tree60884e21ad3458b27f4c9cd116e9f09a7b956078 /activerecord/lib/active_record
parent778c82bea69eb15908a8bb77999ceac0a749242d (diff)
downloadrails-3b8a7cf2a7b2ffce671ca7f655de736c1054edbc.tar.gz
rails-3b8a7cf2a7b2ffce671ca7f655de736c1054edbc.tar.bz2
rails-3b8a7cf2a7b2ffce671ca7f655de736c1054edbc.zip
Stop trying to be clever about when to define attribute methods.
There is no meaningful performance penalty in defining attribute methods, since it only happens once. There is also no reason *not* to define them, since they get thrown in an included module, so they will not 'overwrite' anything. In fact, this is desirable, since it allows us to call super.
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/attribute_methods.rb11
1 files changed, 1 insertions, 10 deletions
diff --git a/activerecord/lib/active_record/attribute_methods.rb b/activerecord/lib/active_record/attribute_methods.rb
index 0b074da0a5..d7bfaa5655 100644
--- a/activerecord/lib/active_record/attribute_methods.rb
+++ b/activerecord/lib/active_record/attribute_methods.rb
@@ -38,21 +38,12 @@ module ActiveRecord
end
end
- # Checks whether the method is defined in the model or any of its subclasses
- # that also derive from Active Record. Raises DangerousAttributeError if the
- # method is defined by Active Record though.
def instance_method_already_implemented?(method_name)
if dangerous_attribute_method?(method_name)
raise DangerousAttributeError, "#{method_name} is defined by ActiveRecord"
end
- method_name = method_name.to_s
- index = ancestors.index(ActiveRecord::Base) || ancestors.length
- @_defined_class_methods ||= ancestors.first(index).map { |m|
- m.instance_methods(false) | m.private_instance_methods(false)
- }.flatten.map {|m| m.to_s }.to_set
-
- @_defined_class_methods.include?(method_name) || generated_attribute_methods.method_defined?(method_name)
+ super
end
# A method name is 'dangerous' if it is already defined by Active Record, but