5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/composite_primary_keys/attribute_methods/read.rb', line 5
def internal_attribute_access_code(attr_name, cast_code)
if cast_code.match(/^ActiveRecord/)
cast_code = "::#{cast_code}"
end
access_code = "(v=@attributes[attr_name]) && #{cast_code}"
primary_keys = Array(self.primary_key)
unless primary_keys.include?(attr_name.to_s)
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})"
end
"attr_name = '#{attr_name}'; #{access_code}"
end
|