# == Schema Information # # Table name: notifications # # id :bigint not null, primary key # notification_type :integer not null # primary_actor_type :string not null # read_at :datetime # secondary_actor_type :string # created_at :datetime not null # updated_at :datetime not null # account_id :bigint not null # primary_actor_id :bigint not null # secondary_actor_id :bigint # user_id :bigint not null # # Indexes # # index_notifications_on_account_id (account_id) # index_notifications_on_user_id (user_id) # uniq_primary_actor_per_account_notifications (primary_actor_type,primary_actor_id) # uniq_secondary_actor_per_account_notifications (secondary_actor_type,secondary_actor_id) # class Notification < ApplicationRecord belongs_to :account belongs_to :user belongs_to :primary_actor, polymorphic: true belongs_to :secondary_actor, polymorphic: true, optional: true NOTIFICATION_TYPES = { conversation_creation: 1, conversation_assignment: 2 }.freeze enum notification_type: NOTIFICATION_TYPES after_create_commit :process_notification_delivery private def process_notification_delivery Notification::EmailNotificationService.new(notification: self).perform # Notification::PushNotificationService.new(notification: self).perform end end