Class: Decidim::ReportingProposals::NearbyProposals
- Inherits:
-
Query
- Object
- Query
- Decidim::ReportingProposals::NearbyProposals
- Defined in:
- app/queries/decidim/reporting_proposals/nearby_proposals.rb
Overview
Class used to retrieve similar proposals.
Class Method Summary collapse
-
.for(components, proposal) ⇒ Object
Syntactic sugar to initialize the class and return the queried objects.
Instance Method Summary collapse
-
#initialize(components, proposal) ⇒ NearbyProposals
constructor
Initializes the class.
-
#query ⇒ Object
Retrieves similar proposals by distance.
Constructor Details
#initialize(components, proposal) ⇒ NearbyProposals
Initializes the class.
components - Decidim::CurrentComponent proposal - Decidim::Proposals::Proposal
19 20 21 22 23 24 |
# File 'app/queries/decidim/reporting_proposals/nearby_proposals.rb', line 19 def initialize(components, proposal) @components = components @proposal = proposal @radius = proposal.component.settings.geocoding_comparison_radius @newer_than = proposal.component.settings.geocoding_comparison_newer_than end |
Class Method Details
.for(components, proposal) ⇒ Object
Syntactic sugar to initialize the class and return the queried objects.
components - Decidim::CurrentComponent proposal - Decidim::Proposals::Proposal
11 12 13 |
# File 'app/queries/decidim/reporting_proposals/nearby_proposals.rb', line 11 def self.for(components, proposal) new(components, proposal).query end |
Instance Method Details
#query ⇒ Object
Retrieves similar proposals by distance
27 28 29 30 31 32 33 |
# File 'app/queries/decidim/reporting_proposals/nearby_proposals.rb', line 27 def query return Decidim::Proposals::Proposal.none if query_ids.blank? Decidim::Proposals::Proposal .where(id: query_ids) .order([Arel.sql("array_position(ARRAY[?], id)"), query_ids]) end |