Class: Decidim::Comments::Comment

Inherits:
ApplicationRecord show all
Includes:
Authorable, Commentable, Reportable
Defined in:
app/models/decidim/comments/comment.rb

Overview

Some resources will be configured as commentable objects so users can comment on them. The will be able to create conversations between users to discuss or share their thoughts about the resource.

Constant Summary collapse

MAX_DEPTH =

Limit the max depth of a comment tree. If C is a comment and R is a reply: C (depth 0) |–R (depth 1) |–R (depth 1)

|--R    (depth 2)
   |--R (depth 3)
3

Instance Method Summary collapse

Instance Method Details

#accepts_new_comments?Boolean

Public: Override Commentable concern method ‘accepts_new_comments?`

Returns:

  • (Boolean)


39
40
41
# File 'app/models/decidim/comments/comment.rb', line 39

def accepts_new_comments?
  depth < MAX_DEPTH
end

#down_voted_by?(user) ⇒ Boolean

Public: Check if the user has downvoted the comment

Returns a bool value to indicate if the condition is truthy or not

Returns:

  • (Boolean)


53
54
55
# File 'app/models/decidim/comments/comment.rb', line 53

def down_voted_by?(user)
  down_votes.any? { |vote| vote.author == user }
end

#reported_content_urlObject

Public: Overrides the ‘reported_content_url` Reportable concern method.



58
59
60
# File 'app/models/decidim/comments/comment.rb', line 58

def reported_content_url
  ResourceLocatorPresenter.new(root_commentable).url(anchor: "comment_#{id}")
end

#up_voted_by?(user) ⇒ Boolean

Public: Check if the user has upvoted the comment

Returns a bool value to indicate if the condition is truthy or not

Returns:

  • (Boolean)


46
47
48
# File 'app/models/decidim/comments/comment.rb', line 46

def up_voted_by?(user)
  up_votes.any? { |vote| vote.author == user }
end