aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/where_clause_factory.rb
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2016-04-12 10:39:32 -0600
committerSean Griffin <sean@seantheprogrammer.com>2016-04-12 10:42:28 -0600
commit714ab8cb5976587470c8487720094c1efb2ba9a2 (patch)
tree0317fb226dfb61e783fe47b0c3496d53d557ea85 /activerecord/lib/active_record/relation/where_clause_factory.rb
parentd6769f4d106ee6f9a3bbad925098260bdac5f799 (diff)
downloadrails-714ab8cb5976587470c8487720094c1efb2ba9a2.tar.gz
rails-714ab8cb5976587470c8487720094c1efb2ba9a2.tar.bz2
rails-714ab8cb5976587470c8487720094c1efb2ba9a2.zip
Allow symbols using "dot notation" to be passed to where
In 04ac5655be91f49cd4dfe2838df96213502fb274 I assumed that we would never want to pass the "table_name.column_name" form to where with a symbol. However, in Ruby 2.2 and later, you can quote symbols using the new hash syntax, so it's a semi-reasonable thing to do if we want to support the dot notation (which I'd rather deprecate, but that would be too painful of a migration). Instead we've changed the definition of "this is a table name with a dot" to when the value associated is a hash. It would make very little sense to write `where("table_name.column_name": { foo: :bar })` in any scenario (other than equality for a JSON column which we don't support through `where` in this way). Close #24514.
Diffstat (limited to 'activerecord/lib/active_record/relation/where_clause_factory.rb')
-rw-r--r--activerecord/lib/active_record/relation/where_clause_factory.rb1
1 files changed, 1 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation/where_clause_factory.rb b/activerecord/lib/active_record/relation/where_clause_factory.rb
index c0ccb00b6f..dbf172a577 100644
--- a/activerecord/lib/active_record/relation/where_clause_factory.rb
+++ b/activerecord/lib/active_record/relation/where_clause_factory.rb
@@ -15,6 +15,7 @@ module ActiveRecord
when Hash
attributes = predicate_builder.resolve_column_aliases(opts)
attributes = klass.send(:expand_hash_conditions_for_aggregates, attributes)
+ attributes.stringify_keys!
attributes, binds = predicate_builder.create_binds(attributes)