Fix find_by with associations not working with adequate record

For now, we will just skip the cache when a non-column key is used in the hash.
If the future, we can probably move some of the logic in PredicateBuilder.expand
up the chain to make caching possible for association queries.

Closes #16903
Fixes #16884
No need to call to_sym here

The hash is now string-keyed, and [_]reflect_on_association calls `to_s` on the
argument anyway.