42 lines
1.0 KiB
Ruby
42 lines
1.0 KiB
Ruby
class Comment < ApplicationRecord
|
|
include Eventable, Mentions, Searchable
|
|
belongs_to :card, touch: true
|
|
|
|
belongs_to :creator, class_name: "User", default: -> { Current.user }
|
|
has_many :reactions, dependent: :delete_all
|
|
|
|
has_rich_text :body
|
|
searchable_by :body, using: :comments_search_index
|
|
|
|
scope :chronologically, -> { order created_at: :asc, id: :desc }
|
|
|
|
after_create_commit :watch_card_by_creator
|
|
|
|
delegate :collection, :watch_by, to: :card
|
|
|
|
def to_partial_path
|
|
"cards/#{super}"
|
|
end
|
|
|
|
def attachments
|
|
body&.body&.attachments&.select { |attachment| attachment.attachable.is_a?(ActiveStorage::Blob) } || []
|
|
end
|
|
|
|
def has_attachments?
|
|
body&.body&.attachments&.any? { |attachment| attachment.attachable.is_a?(ActiveStorage::Blob) }
|
|
end
|
|
|
|
private
|
|
def watch_card_by_creator
|
|
card.watch_by creator
|
|
end
|
|
|
|
def search_embedding_content
|
|
<<~CONTENT
|
|
Card title: #{card.title}
|
|
Content: #{body.to_plain_text}
|
|
Created by: #{creator.name}}
|
|
CONTENT
|
|
end
|
|
end
|