diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-03-01 23:25:01 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-01 23:25:01 +0900 |
commit | 6568d7da636a146578a13cb3a9a096d69dd811a7 (patch) | |
tree | 01486c267083ec1743f60ce601b0eb1a4cc682da /activerecord/lib | |
parent | c82705b15faaf12d568272e86afb6ad2c151007f (diff) | |
parent | bff5e799c056a1914653ae53166949b4adff3d4b (diff) | |
download | rails-6568d7da636a146578a13cb3a9a096d69dd811a7.tar.gz rails-6568d7da636a146578a13cb3a9a096d69dd811a7.tar.bz2 rails-6568d7da636a146578a13cb3a9a096d69dd811a7.zip |
Merge pull request #35441 from kamipo/allow_from_with_index_hint
Relax table name detection in `from` to allow any extension like INDEX hint
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/relation/query_methods.rb | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index f88493df8a..24a50db619 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -1091,14 +1091,17 @@ module ActiveRecord field = klass.attribute_alias(field) if klass.attribute_alias?(field) from = from_clause.name || from_clause.value - if klass.columns_hash.key?(field) && - (!from || from == table.name || from == connection.quote_table_name(table.name)) + if klass.columns_hash.key?(field) && (!from || table_name_matches?(from)) arel_attribute(field) else yield end end + def table_name_matches?(from) + /(?:\A|(?<!FROM)\s)(?:\b#{table.name}\b|#{connection.quote_table_name(table.name)})(?!\.)/i.match?(from.to_s) + end + def reverse_sql_order(order_query) if order_query.empty? return [arel_attribute(primary_key).desc] if primary_key |