ffab4cad6f
- Reaction: belongs_to :reactable (polymorphic) instead of :comment - Comment: has_many :reactions with as: :reactable - Views: use reaction.reactable instead of reaction.comment - Fixtures: use polymorphic syntax for reactable association Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
29 lines
947 B
Ruby
29 lines
947 B
Ruby
class Comment < ApplicationRecord
|
|
include Attachments, Eventable, Mentions, Promptable, Searchable, Storage::Tracked
|
|
|
|
belongs_to :account, default: -> { card.account }
|
|
belongs_to :card, touch: true
|
|
belongs_to :creator, class_name: "User", default: -> { Current.user }
|
|
has_many :reactions, -> { order(:created_at) }, as: :reactable, dependent: :delete_all
|
|
|
|
has_rich_text :body
|
|
|
|
scope :chronologically, -> { order created_at: :asc, id: :desc }
|
|
scope :preloaded, -> { with_rich_text_body.includes(reactions: :reacter) }
|
|
scope :by_system, -> { joins(:creator).where(creator: { role: :system }) }
|
|
scope :by_user, -> { joins(:creator).where.not(creator: { role: :system }) }
|
|
|
|
after_create_commit :watch_card_by_creator
|
|
|
|
delegate :publicly_accessible?, :accessible_to?, :board, :watch_by, to: :card
|
|
|
|
def to_partial_path
|
|
"cards/#{super}"
|
|
end
|
|
|
|
private
|
|
def watch_card_by_creator
|
|
card.watch_by creator
|
|
end
|
|
end
|