Use where.not instead of where(NOT IN)

This way we simplify the code a bit and reduce our usage of raw SQL.
This commit is contained in:
Javi Martín
2020-05-19 16:03:32 +02:00
parent f427c757ba
commit 1b34c061bb
4 changed files with 6 additions and 7 deletions

View File

@@ -158,7 +158,7 @@ class ProposalsController < ApplicationController
.sort_by_confidence_score.limit(Setting["featured_proposals_number"])
if @featured_proposals.present?
set_featured_proposal_votes(@featured_proposals)
@resources = @resources.where("proposals.id NOT IN (?)", @featured_proposals.map(&:id))
@resources = @resources.where.not(id: @featured_proposals)
end
end
end

View File

@@ -96,7 +96,7 @@ class UsersController < ApplicationController
disabled_commentables << "Debate" unless Setting["process.debates"]
disabled_commentables << "Budget::Investment" unless Setting["process.budgets"]
if disabled_commentables.present?
all_user_comments.where("commentable_type NOT IN (?)", disabled_commentables)
all_user_comments.where.not(commentable_type: disabled_commentables)
else
all_user_comments
end

View File

@@ -1,5 +1,5 @@
section "Voting Debates, Proposals & Comments" do
not_org_users = User.where(["users.id NOT IN(?)", User.organizations.pluck(:id)])
not_org_users = User.where.not(id: User.organizations)
100.times do
voter = not_org_users.level_two_or_three_verified.all.sample
vote = [true, false].sample

View File

@@ -45,10 +45,9 @@ class UserSegments
def self.not_supported_on_current_budget
author_ids(
User.where(
"id NOT IN (?)",
Vote.select(:voter_id).where(votable: current_budget_investments).distinct
)
User.where.not(
id: Vote.select(:voter_id).where(votable: current_budget_investments).distinct
)
)
end