Class: Decidim::Accountability::Result

Inherits:
ApplicationRecord show all
Includes:
Comments::CommentableWithComponent, DownloadYourData, FilterableResource, HasAttachmentCollections, HasAttachments, HasCategory, HasComponent, HasReference, Loggable, Randomable, Resourceable, ScopableResource, Searchable, Traceable, TranslatableResource
Defined in:
decidim-accountability/app/models/decidim/accountability/result.rb

Overview

The data store for a Result in the Decidim::Accountability component. It stores a title, description and any other useful information to render a custom result.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from HasAttachments

#attachment_context

Class Method Details

.log_presenter_class_for(_log) ⇒ Object


48
49
50
# File 'decidim-accountability/app/models/decidim/accountability/result.rb', line 48

def self.log_presenter_class_for(_log)
  Decidim::Accountability::AdminLog::ResultPresenter
end

.ransackable_scopes(_auth_object = nil) ⇒ Object


85
86
87
# File 'decidim-accountability/app/models/decidim/accountability/result.rb', line 85

def self.ransackable_scopes(_auth_object = nil)
  [:with_category, :with_scope]
end

Instance Method Details

#allow_resource_permissions?Boolean

Public: Overrides the `allow_resource_permissions?` Resourceable concern method.

Returns:

  • (Boolean)

81
82
83
# File 'decidim-accountability/app/models/decidim/accountability/result.rb', line 81

def allow_resource_permissions?
  true
end

#comments_have_alignment?Boolean

Public: Overrides the `comments_have_alignment?` Commentable concern method.

Returns:

  • (Boolean)

71
72
73
# File 'decidim-accountability/app/models/decidim/accountability/result.rb', line 71

def comments_have_alignment?
  true
end

#comments_have_votes?Boolean

Public: Overrides the `comments_have_votes?` Commentable concern method.

Returns:

  • (Boolean)

76
77
78
# File 'decidim-accountability/app/models/decidim/accountability/result.rb', line 76

def comments_have_votes?
  true
end

#update_parent_progressObject


52
53
54
55
56
# File 'decidim-accountability/app/models/decidim/accountability/result.rb', line 52

def update_parent_progress
  return if parent.blank?

  parent.update_progress!
end

#update_progress!Object

Public: There are two ways to update parent's progress:

- using weights, in which case each progress is multiplied by the weigth and them summed
- not using weights, and using the average of progress of each children

61
62
63
64
65
66
67
68
# File 'decidim-accountability/app/models/decidim/accountability/result.rb', line 61

def update_progress!
  self.progress = if children_use_weighted_progress?
                    children.sum { |result| (result.progress.presence || 0) * (result.weight.presence || 1) }
                  else
                    children.average(:progress)
                  end
  save!
end