Files
fizzy/app/models/search/result.rb
T
2025-11-17 09:12:36 -05:00

40 lines
933 B
Ruby

class Search::Result < ApplicationRecord
attribute :card_id, :uuid
attribute :comment_id, :uuid
attribute :creator_id, :uuid
belongs_to :creator, class_name: "User"
belongs_to :card, foreign_key: :card_id, optional: true
belongs_to :comment, foreign_key: :comment_id, optional: true
def card_title
highlight(card.title, show: :full) if card_id
end
def card_description
highlight(card.description.to_plain_text, show: :snippet) if card_id
end
def comment_body
highlight(comment.body.to_plain_text, show: :snippet) if comment_id
end
def source
comment_id.present? ? comment : card
end
def readonly?
true
end
private
def highlight(text, show:)
if text.present? && attribute?(:query)
highlighter = Search::Highlighter.new(query)
show == :snippet ? highlighter.snippet(text) : highlighter.highlight(text)
else
text
end
end
end