aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/core.rb
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-07-19 08:18:43 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-07-20 00:50:59 +0900
commit0d56480c4b547915f99f3581065e52a48bd98ca1 (patch)
tree327f0a44a421c44340361648877b585c8c977b0d /activerecord/lib/active_record/core.rb
parent1f7f872ac6c8b57af6e0117bde5f6c38d0bae923 (diff)
downloadrails-0d56480c4b547915f99f3581065e52a48bd98ca1.tar.gz
rails-0d56480c4b547915f99f3581065e52a48bd98ca1.tar.bz2
rails-0d56480c4b547915f99f3581065e52a48bd98ca1.zip
Fix `find_by` with range conditions
`StatementCache` doesn't support range conditions. So we need to through the args to `FinderMethods#find_by` if range value is passed.
Diffstat (limited to 'activerecord/lib/active_record/core.rb')
-rw-r--r--activerecord/lib/active_record/core.rb5
1 files changed, 2 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb
index 3ea7b644c2..da0331d9c3 100644
--- a/activerecord/lib/active_record/core.rb
+++ b/activerecord/lib/active_record/core.rb
@@ -166,8 +166,7 @@ module ActiveRecord
id = ids.first
- return super if id.kind_of?(Array) ||
- id.is_a?(ActiveRecord::Base)
+ return super if StatementCache.unsupported_value?(id)
key = primary_key
@@ -192,7 +191,7 @@ module ActiveRecord
hash = args.first
return super if !(Hash === hash) || hash.values.any? { |v|
- v.nil? || Array === v || Hash === v || Relation === v || Base === v
+ StatementCache.unsupported_value?(v)
}
# We can't cache Post.find_by(author: david) ...yet