From 657f8d129ccf245345d4ef4bc69d0d640a1e520b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 30 Sep 2019 12:02:49 +0200 Subject: [PATCH] Use class methods for multi-line scopes Some of our team members don't like using `do...end` for scopes, and some other team members don't like using `{ ... }` for multi-line blocks, so we've agreed to use class methods instead. --- app/models/budget/investment.rb | 17 +++++++++++++---- app/models/legislation/process.rb | 9 ++++++--- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app/models/budget/investment.rb b/app/models/budget/investment.rb index b42255721..5456636d6 100644 --- a/app/models/budget/investment.rb +++ b/app/models/budget/investment.rb @@ -97,13 +97,22 @@ class Budget scope :by_heading, ->(heading_id) { where(heading_id: heading_id) } scope :by_admin, ->(admin_id) { where(administrator_id: admin_id) } scope :by_tag, ->(tag_name) { tagged_with(tag_name) } - scope :by_valuator, ->(valuator_id) { where("budget_valuator_assignments.valuator_id = ?", valuator_id).joins(:valuator_assignments) } - scope :by_tracker, ->(tracker_id) { where("budget_tracker_assignments.tracker_id = ?", - tracker_id).joins(:tracker_assignments) } - scope :by_valuator_group, ->(valuator_group_id) { where("budget_valuator_group_assignments.valuator_group_id = ?", valuator_group_id).joins(:valuator_group_assignments) } scope :for_render, -> { includes(:heading) } + def self.by_valuator(valuator_id) + where("budget_valuator_assignments.valuator_id = ?", valuator_id).joins(:valuator_assignments) + end + + def self.by_tracker(tracker_id) + where("budget_tracker_assignments.tracker_id = ?", tracker_id).joins(:tracker_assignments) + end + + def self.by_valuator_group(valuator_group_id) + joins(:valuator_group_assignments). + where("budget_valuator_group_assignments.valuator_group_id = ?", valuator_group_id) + end + before_create :set_original_heading_id before_save :calculate_confidence_score after_save :recalculate_heading_winners diff --git a/app/models/legislation/process.rb b/app/models/legislation/process.rb index 8b52e12b1..c07edadd6 100644 --- a/app/models/legislation/process.rb +++ b/app/models/legislation/process.rb @@ -59,9 +59,12 @@ class Legislation::Process < ApplicationRecord scope :past, -> { where("end_date < ?", Date.current) } scope :published, -> { where(published: true) } - scope :not_in_draft, -> { where("draft_phase_enabled = false or (draft_start_date IS NOT NULL and - draft_end_date IS NOT NULL and (draft_start_date > ? or - draft_end_date < ?))", Date.current, Date.current) } + + def self.not_in_draft + where("draft_phase_enabled = false or (draft_start_date IS NOT NULL and + draft_end_date IS NOT NULL and (draft_start_date > ? or + draft_end_date < ?))", Date.current, Date.current) + end def past? end_date < Date.current