Permalink
Browse files

reduce the amount of code Ruby has to parse

  • Loading branch information...
1 parent 7e6ea01 commit 127d16e0be9dc79c5c07359c101a2b2dfb1c9f03 @tenderlove tenderlove committed Jul 3, 2013
Showing with 8 additions and 3 deletions.
  1. +8 −3 activerecord/lib/active_record/attribute_methods/read.rb
@@ -52,16 +52,21 @@ def cache_attribute?(attr_name)
# key the @attributes_cache in read_attribute.
def define_method_attribute(name)
safe_name = name.unpack('h*').first
+ temp_method = "__temp__#{safe_name}"
+
ActiveRecord::AttributeMethods::AttrNames.set_name_cache safe_name, name
generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1
- def __temp__#{safe_name}
+ def #{temp_method}
name = ::ActiveRecord::AttributeMethods::AttrNames::ATTR_#{safe_name}
read_attribute(name) { |n| missing_attribute(n, caller) }
end
- alias_method #{name.inspect}, :__temp__#{safe_name}
- undef_method :__temp__#{safe_name}
STR
+
+ generated_attribute_methods.module_eval do
+ alias_method name, temp_method
+ undef_method temp_method
+ end
end
private

0 comments on commit 127d16e

Please sign in to comment.