Class: Decidim::Initiatives::SimilarInitiatives

Inherits:
Query
  • Object
show all
Includes:
CurrentLocale, TranslationsHelper
Defined in:
decidim-initiatives/app/queries/decidim/initiatives/similar_initiatives.rb

Overview

Class uses to retrieve similar initiatives types.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CurrentLocale

#current_locale

Methods included from TranslationsHelper

empty_translatable, ensure_translatable, multi_translation, translated_in_current_locale?

Methods included from TranslatableAttributes

#default_locale?

Methods inherited from Query

#cached_query, #each, #eager?, #exists?, merge, #none?, #relation?, #|

Constructor Details

#initialize(organization, form) ⇒ SimilarInitiatives

Initializes the class.

organization - Decidim::Organization form - Decidim::Initiatives::PreviousForm



22
23
24
25
# File 'decidim-initiatives/app/queries/decidim/initiatives/similar_initiatives.rb', line 22

def initialize(organization, form)
  @organization = organization
  @form = form
end

Class Method Details

.for(organization, form) ⇒ Object

Syntactic sugar to initialize the class and return the queried objects.

organization - Decidim::Organization form - Decidim::Initiatives::PreviousForm



14
15
16
# File 'decidim-initiatives/app/queries/decidim/initiatives/similar_initiatives.rb', line 14

def self.for(organization, form)
  new(organization, form).query
end

Instance Method Details

#queryObject

Retrieves similar initiatives



28
29
30
31
32
33
34
35
36
37
38
39
# File 'decidim-initiatives/app/queries/decidim/initiatives/similar_initiatives.rb', line 28

def query
  Initiative
    .published
    .where(organization: @organization)
    .where(
      Arel.sql("GREATEST(#{title_similarity}, #{description_similarity}) >= ?").to_s,
      translated_attribute(form.title),
      translated_attribute(form.description),
      Decidim::Initiatives.similarity_threshold
    )
    .limit(Decidim::Initiatives.similarity_limit)
end