mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-18 20:59:39 +02:00
33 lines
855 B
Ruby
33 lines
855 B
Ruby
class Message < ApplicationRecord
|
|
belongs_to :chat
|
|
|
|
enum :role, { user: "user", assistant: "assistant", system: "system" }
|
|
|
|
validates :content, presence: true, allow_blank: true
|
|
validates :role, presence: true
|
|
|
|
scope :conversation, -> { where(debug_mode: false, role: [ :user, :assistant ]) }
|
|
scope :ordered, -> { order(created_at: :asc) }
|
|
|
|
after_create_commit :broadcast_to_chat
|
|
after_update_commit :broadcast_update_to_chat
|
|
|
|
private
|
|
def broadcast_to_chat
|
|
broadcast_append_to(
|
|
chat,
|
|
partial: "messages/message",
|
|
locals: { message: self },
|
|
target: "chat_#{chat.id}_messages"
|
|
)
|
|
end
|
|
|
|
def broadcast_update_to_chat
|
|
broadcast_update_to(
|
|
chat,
|
|
partial: "messages/message",
|
|
locals: { message: self },
|
|
target: "message_#{self.id}"
|
|
)
|
|
end
|
|
end
|