From 4e4f3ea9226c54d87e89f9cb73fe5c272ff9c206 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Tue, 8 Mar 2016 14:40:25 +0100 Subject: [PATCH] refactors scopes for spending proposals --- app/models/spending_proposal.rb | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/app/models/spending_proposal.rb b/app/models/spending_proposal.rb index 6c8c3c8a1..27842fa91 100644 --- a/app/models/spending_proposal.rb +++ b/app/models/spending_proposal.rb @@ -19,13 +19,17 @@ class SpendingProposal < ActiveRecord::Base validates :description, length: { maximum: SpendingProposal.description_max_length } validates :terms_of_service, acceptance: { allow_nil: false }, on: :create - scope :valuation_open, -> { where(valuation_finished: false) } - scope :without_admin, -> { valuation_open.where(administrator_id: nil) } - scope :managed, -> { valuation_open.where(valuation_assignments_count: 0).where("administrator_id IS NOT ?", nil) } - scope :valuating, -> { valuation_open.where("valuation_assignments_count > 0 AND valuation_finished = ?", false) } - scope :valuation_finished, -> { where(valuation_finished: true) } + scope :valuation_open, -> { where(valuation_finished: false) } + scope :without_admin, -> { valuation_open.where(administrator_id: nil) } + scope :managed, -> { valuation_open.where(valuation_assignments_count: 0).where("administrator_id IS NOT ?", nil) } + scope :valuating, -> { valuation_open.where("valuation_assignments_count > 0 AND valuation_finished = ?", false) } + scope :valuation_finished, -> { where(valuation_finished: true) } - scope :for_render, -> { includes(:geozone, administrator: :user, valuators: :user) } + scope :by_admin, -> (admin) { where(administrator_id: admin.presence) } + scope :by_tag, -> (tag_name) { tagged_with(tag_name) } + scope :by_valuator, -> (valuator) { where("valuation_assignments.valuator_id = ?", valuator.presence).joins(:valuation_assignments) } + + scope :for_render, -> { includes(:geozone, administrator: :user, valuators: :user) } def description super.try :html_safe @@ -34,7 +38,7 @@ class SpendingProposal < ActiveRecord::Base def self.search(params, current_filter) results = self results = results.by_geozone(params[:geozone_id]) if params[:geozone_id].present? - results = results.by_administrator(params[:administrator_id]) if params[:administrator_id].present? + results = results.by_admin(params[:administrator_id]) if params[:administrator_id].present? results = results.by_tag(params[:tag_name]) if params[:tag_name].present? results = results.by_valuator(params[:valuator_id]) if params[:valuator_id].present? results = results.send(current_filter) if current_filter.present? @@ -49,19 +53,6 @@ class SpendingProposal < ActiveRecord::Base end end - def self.by_administrator(administrator) - where(administrator_id: administrator.presence) - end - - - def self.by_tag(tag_name) - tagged_with(tag_name) - end - - def self.by_valuator(valuator) - joins(:valuation_assignments).includes(:valuators).where("valuation_assignments.valuator_id = ?", valuator.presence) - end - def feasibility case feasible when true