diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2016-08-16 23:10:53 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-16 23:10:53 -0300 |
commit | af4dfa9e1ad85986f65f759f8222fc3bbbf1f4ef (patch) | |
tree | a3ad0f772480bbce60d9db9bddd4493b6483b7e4 /activerecord/lib | |
parent | 12a42f79adb972948c7509a0be2971ca2c37e7c3 (diff) | |
parent | c6a62dc327c54baec87306f5c381e13cacc00a19 (diff) | |
download | rails-af4dfa9e1ad85986f65f759f8222fc3bbbf1f4ef.tar.gz rails-af4dfa9e1ad85986f65f759f8222fc3bbbf1f4ef.tar.bz2 rails-af4dfa9e1ad85986f65f759f8222fc3bbbf1f4ef.zip |
Merge pull request #25671 from kamipo/dont_handle_as_associated_predicate_if_table_has_column
Do not handle as an associated predicate if a table has the column
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/relation/predicate_builder.rb | 4 | ||||
-rw-r--r-- | activerecord/lib/active_record/table_metadata.rb | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/relation/predicate_builder.rb b/activerecord/lib/active_record/relation/predicate_builder.rb index 0c8282de8e..780a1ee422 100644 --- a/activerecord/lib/active_record/relation/predicate_builder.rb +++ b/activerecord/lib/active_record/relation/predicate_builder.rb @@ -74,7 +74,7 @@ module ActiveRecord return ["1=0"] if attributes.empty? attributes.flat_map do |key, value| - if value.is_a?(Hash) + if value.is_a?(Hash) && !table.has_column?(key) associated_predicate_builder(key).expand_from_hash(value) else build(table.arel_attribute(key), value) @@ -88,7 +88,7 @@ module ActiveRecord attributes.each do |column_name, value| case - when value.is_a?(Hash) + when value.is_a?(Hash) && !table.has_column?(column_name) attrs, bvs = associated_predicate_builder(column_name).create_binds_for_hash(value) result[column_name] = attrs binds += bvs diff --git a/activerecord/lib/active_record/table_metadata.rb b/activerecord/lib/active_record/table_metadata.rb index e8d6a144f9..0ca880e635 100644 --- a/activerecord/lib/active_record/table_metadata.rb +++ b/activerecord/lib/active_record/table_metadata.rb @@ -37,6 +37,10 @@ module ActiveRecord end end + def has_column?(column_name) + klass && klass.columns_hash.key?(column_name.to_s) + end + def associated_with?(association_name) klass && klass._reflect_on_association(association_name) end |