diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2018-06-14 14:25:52 +0300 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2018-06-14 14:25:52 +0300 |
commit | 431c3f18abc8b555dbc43f1ffe079b577a22c3c6 (patch) | |
tree | 23042b15e435572a37f2237d19b72207bdfcff0f /app | |
parent | 461d71fc5de62ae85cc5d22eb3f57efa1d00d520 (diff) | |
parent | 53ea0f221ee37e8be7365fac98e936c0df2da85d (diff) |
Merge branch 'blackst0ne-rails5-fix-snippets-finder' into 'master'
[Rails5] Fix snippets_finder arel queries
Closes #47832
See merge request gitlab-org/gitlab-ce!19796
Diffstat (limited to 'app')
-rw-r--r-- | app/finders/snippets_finder.rb | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/app/finders/snippets_finder.rb b/app/finders/snippets_finder.rb index d498a2d6d11..9d3772d7541 100644 --- a/app/finders/snippets_finder.rb +++ b/app/finders/snippets_finder.rb @@ -54,7 +54,10 @@ class SnippetsFinder < UnionFinder end def authorized_snippets - Snippet.where(feature_available_projects.or(not_project_related)) + # This query was intentionally converted to a raw one to get it work in Rails 5.0. + # In Rails 5.0 and 5.1 there's a bug: https://github.com/rails/arel/issues/531 + # Please convert it back when on rails 5.2 as it works again as expected since 5.2. + Snippet.where("#{feature_available_projects} OR #{not_project_related}") .public_or_visible_to_user(current_user) end @@ -86,18 +89,20 @@ class SnippetsFinder < UnionFinder def feature_available_projects # Don't return any project related snippets if the user cannot read cross project - return table[:id].eq(nil) unless Ability.allowed?(current_user, :read_cross_project) + return table[:id].eq(nil).to_sql unless Ability.allowed?(current_user, :read_cross_project) projects = projects_for_user do |part| part.with_feature_available_for_user(:snippets, current_user) end.select(:id) - arel_query = Arel::Nodes::SqlLiteral.new(projects.to_sql) - table[:project_id].in(arel_query) + # This query was intentionally converted to a raw one to get it work in Rails 5.0. + # In Rails 5.0 and 5.1 there's a bug: https://github.com/rails/arel/issues/531 + # Please convert it back when on rails 5.2 as it works again as expected since 5.2. + "snippets.project_id IN (#{projects.to_sql})" end def not_project_related - table[:project_id].eq(nil) + table[:project_id].eq(nil).to_sql end def table |