Sha256: 8e781eafa9aa483e1982109dcab239c697857d2f27d91421635e77c24f2f09be
Contents?: true
Size: 1.46 KB
Versions: 28
Compression:
Stored size: 1.46 KB
Contents
# frozen_string_literal: true module Decidim module Proposals # Class used to retrieve similar collaborative_drafts. class SimilarCollaborativeDrafts < Rectify::Query include Decidim::TranslationsHelper # Syntactic sugar to initialize the class and return the queried objects. # # component - Decidim::CurrentComponent # collaborative_draft - Decidim::Proposals::CollaborativeDraft def self.for(component, collaborative_draft) new(component, collaborative_draft).query end # Initializes the class. # # component - Decidim::CurrentComponent # collaborative_draft - Decidim::Proposals::CollaborativeDraft def initialize(component, collaborative_draft) @component = component @collaborative_draft = collaborative_draft end # Retrieves similar collaborative_drafts def query Decidim::Proposals::CollaborativeDraft .where(component: @component) .where( "GREATEST(#{title_similarity}, #{body_similarity}) >= ?", @collaborative_draft[:title], @collaborative_draft[:body], Decidim::Proposals.similarity_threshold ) .limit(Decidim::Proposals.similarity_limit) end private attr_reader :collaborative_draft def title_similarity "similarity(title, ?)" end def body_similarity "similarity(body, ?)" end end end end
Version data entries
28 entries across 28 versions & 1 rubygems