Chatwoot/app/models/mention.rb
Pranav Raj S 2be71e73dc
feat: Add a view for mentions (#3505)
- Added a new table mentions for saving user mentions
- Added a filter conversation_type in the API
- Added a view to see the mentions
2021-12-09 11:20:14 +05:30

50 lines
1.5 KiB
Ruby

# == Schema Information
#
# Table name: mentions
#
# id :bigint not null, primary key
# mentioned_at :datetime not null
# created_at :datetime not null
# updated_at :datetime not null
# account_id :bigint not null
# conversation_id :bigint not null
# user_id :bigint not null
#
# Indexes
#
# index_mentions_on_account_id (account_id)
# index_mentions_on_conversation_id (conversation_id)
# index_mentions_on_user_id (user_id)
# index_mentions_on_user_id_and_conversation_id (user_id,conversation_id) UNIQUE
#
# Foreign Keys
#
# fk_rails_... (conversation_id => conversations.id)
# fk_rails_... (user_id => users.id)
#
class Mention < ApplicationRecord
before_validation :ensure_account_id
validates :mentioned_at, presence: true
validates :account_id, presence: true
validates :conversation_id, presence: true
validates :user_id, presence: true
validates :user, uniqueness: { scope: :conversation }
belongs_to :account
belongs_to :conversation
belongs_to :user
after_commit :notify_mentioned_user
scope :latest, -> { order(mentioned_at: :desc) }
private
def ensure_account_id
self.account_id = conversation&.account_id
end
def notify_mentioned_user
Rails.configuration.dispatcher.dispatch(CONVERSATION_MENTIONED, Time.zone.now, user: user, conversation: conversation)
end
end