Fewer string allocations in attribute method

This commit is contained in:
Jon Leighton 2011-12-01 22:57:34 +00:00
parent f6b5046305
commit 6bff6439b1

@ -76,17 +76,17 @@ def cacheable_column?(column)
end
def internal_attribute_access_code(attr_name, cast_code)
access_code = "(v=@attributes['#{attr_name}']) && #{cast_code}"
access_code = "(v=@attributes[attr_name]) && #{cast_code}"
unless attr_name == primary_key
access_code.insert(0, "missing_attribute('#{attr_name}', caller) unless @attributes.has_key?('#{attr_name}'); ")
access_code.insert(0, "missing_attribute(attr_name, caller) unless @attributes.has_key?(attr_name); ")
end
if cache_attribute?(attr_name)
access_code = "@attributes_cache['#{attr_name}'] ||= (#{access_code})"
access_code = "@attributes_cache[attr_name] ||= (#{access_code})"
end
access_code
"attr_name = '#{attr_name}'; #{access_code}"
end
def external_attribute_access_code(attr_name, cast_code)