Class: Query
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Query
- Extended by:
- PaginationSearch::Pagination
- Defined in:
- app/models/query.rb
Constant Summary collapse
- LOCATIONS_FOR_ATTRIBUTES =
{ title: { association: :base, column: :title, type: :text }, body: { association: :base, column: :latest_body, type: :text }, author: { association: :users, column: :name, type: :text }, tags: { association: :tags, column: :name, type: :text }, updated_at: { association: :base, column: :updated_at, type: :time }, created_at: { association: :base, column: :created_at, type: :time } }.freeze
- INCLUDES_MODELS =
[:query_versions, :users, :tags, :taggings].freeze
Instance Attribute Summary collapse
Instance Method Summary collapse
- #add_result(result) ⇒ Object
- #create_roles ⇒ Object
- #latest_completed_result ⇒ Object
- #latest_query_version ⇒ Object
- #performant_tag_list ⇒ Object
- #roles ⇒ Object
- #set_roles(roles) ⇒ Object
- #summary ⇒ Object
Methods included from PaginationSearch::Pagination
Instance Attribute Details
#version ⇒ Object
69 70 71 |
# File 'app/models/query.rb', line 69 def version @version || latest_query_version end |
Instance Method Details
#add_result(result) ⇒ Object
73 74 75 76 |
# File 'app/models/query.rb', line 73 def add_result(result) return unless result latest_query_version.add_result(result) end |
#create_roles ⇒ Object
63 64 65 66 67 |
# File 'app/models/query.rb', line 63 def create_roles return unless @roles_to_create.present? query_roles.delete_all @roles_to_create.each { |role| query_roles.create(role: role) } end |
#latest_completed_result ⇒ Object
39 40 41 |
# File 'app/models/query.rb', line 39 def latest_completed_result latest_results.completed.last end |
#latest_query_version ⇒ Object
51 52 53 |
# File 'app/models/query.rb', line 51 def latest_query_version query_versions.last end |
#performant_tag_list ⇒ Object
43 44 45 46 47 48 49 |
# File 'app/models/query.rb', line 43 def performant_tag_list # ActsAsTaggableOn's tag_list method triggers two queries for every record taggings.map do |tagging| tag = .find { |t| t.id == tagging.tag_id } tag.name if tag end end |
#roles ⇒ Object
55 56 57 |
# File 'app/models/query.rb', line 55 def roles query_roles.map(&:role).uniq end |
#set_roles(roles) ⇒ Object
59 60 61 |
# File 'app/models/query.rb', line 59 def set_roles(roles) @roles_to_create = roles end |
#summary ⇒ Object
78 79 80 81 82 |
# File 'app/models/query.rb', line 78 def summary Summarizer.new(query_versions).reduce(version: 0, comments: 0) do |qv| { versions: 1, comments: qv.comment.blank? ? 0 : 1} end end |