@@ -34,33 +34,18 @@ class ScroogedAttributes < Hash
34
34
attr_accessor :fully_fetched , :klass , :updateable_result_set
35
35
36
36
def self . setup ( record , klass , updateable_result_set )
37
- hash = new . replace ( record )
37
+ hash = new . replace ( klass . columns_hash . merge ( record ) )
38
38
hash . fully_fetched = false
39
39
hash . klass = klass
40
40
hash . updateable_result_set = updateable_result_set
41
41
hash
42
42
end
43
43
44
- # Delegate Hash keys to all defined columns
45
- #
46
- def keys
47
- @klass . column_names
48
- end
49
-
50
- # Let #has_key? consider defined columns
51
- #
52
- def has_key? ( attr_name )
53
- @klass . columns_hash . has_key? ( attr_name )
54
- end
55
-
56
- alias_method :include? , :has_key?
57
- alias_method :key? , :has_key?
58
- alias_method :member? , :has_key?
59
-
60
44
# Lazily augment and load missing attributes
61
45
#
62
46
def []( attr_name )
63
- if interesting_for_scrooge? ( attr_name )
47
+ return nil unless has_key? ( attr_name )
48
+ if !scrooge_columns . include? ( attr_name )
64
49
augment_callsite! ( attr_name )
65
50
fetch_remaining
66
51
add_to_scrooge_columns ( attr_name )
@@ -131,10 +116,6 @@ def fetch_remaining!( columns_to_fetch )
131
116
@updateable_result_set . reload_columns! ( columns_to_fetch )
132
117
end
133
118
134
- def interesting_for_scrooge? ( attr_name )
135
- @klass . columns_hash . has_key? ( attr_name ) && !scrooge_columns . include? ( attr_name )
136
- end
137
-
138
119
def augment_callsite! ( attr_name )
139
120
@klass . scrooge_seen_column! ( callsite_signature , attr_name )
140
121
end
0 commit comments