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
- #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
63 64 65 |
# File 'app/models/query.rb', line 63 def version @version || latest_query_version end |
Instance Method Details
#add_result(result) ⇒ Object
67 68 69 70 |
# File 'app/models/query.rb', line 67 def add_result(result) return unless result latest_query_version.add_result(result) end |
#latest_completed_result ⇒ Object
38 39 40 |
# File 'app/models/query.rb', line 38 def latest_completed_result latest_results.completed.last end |
#latest_query_version ⇒ Object
50 51 52 |
# File 'app/models/query.rb', line 50 def latest_query_version query_versions.last end |
#performant_tag_list ⇒ Object
42 43 44 45 46 47 48 |
# File 'app/models/query.rb', line 42 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
54 55 56 |
# File 'app/models/query.rb', line 54 def roles query_roles.map(&:role).uniq end |
#set_roles(roles) ⇒ Object
58 59 60 61 |
# File 'app/models/query.rb', line 58 def set_roles(roles) query_roles.delete_all roles.each { |role| query_roles.build(role: role) } end |
#summary ⇒ Object
72 73 74 75 76 |
# File 'app/models/query.rb', line 72 def summary Summarizer.new(query_versions).reduce(version: 0, comments: 0) do |qv| { versions: 1, comments: qv.comment.blank? ? 0 : 1} end end |