File tree Expand file tree Collapse file tree 2 files changed +14
-5
lines changed
activerecord/lib/active_record
connection_adapters/abstract Expand file tree Collapse file tree 2 files changed +14
-5
lines changed Original file line number Diff line number Diff line change @@ -612,7 +612,7 @@ def all(*args)
612
612
# Post.find_by_sql ["SELECT title FROM posts WHERE author = ? AND created > ?", author_id, start_date]
613
613
# > [#<Post:0x36bff9c @attributes={"first_name"=>"The Cheap Man Buys Twice"}>, ...]
614
614
def find_by_sql ( sql )
615
- connection . select_all ( sanitize_sql ( sql ) , "#{ name } Load" ) . map { |record | instantiate ( record ) }
615
+ connection . select_all ( sanitize_sql ( sql ) , "#{ name } Load" ) . collect! { |record | instantiate ( record ) }
616
616
end
617
617
618
618
# Checks whether a record exists in the database that matches conditions given. These conditions
Original file line number Diff line number Diff line change @@ -72,12 +72,21 @@ def columns_with_query_cache(*args)
72
72
73
73
private
74
74
def cache_sql ( sql )
75
- if @query_cache . has_key? ( sql )
76
- log_info ( sql , "CACHE" , 0.0 )
77
- @query_cache [ sql ]
75
+ result =
76
+ if @query_cache . has_key? ( sql )
77
+ log_info ( sql , "CACHE" , 0.0 )
78
+ @query_cache [ sql ]
79
+ else
80
+ @query_cache [ sql ] = yield
81
+ end
82
+
83
+ if Array === result
84
+ result . collect { |row | row . dup }
78
85
else
79
- @query_cache [ sql ] = yield . freeze
86
+ result . duplicable? ? result . dup : result
80
87
end
88
+ rescue TypeError
89
+ result
81
90
end
82
91
end
83
92
end
You can’t perform that action at this time.
0 commit comments