Sha256: f00ecf711b7689371c0a71ee0be7f5c46a2ede1c7bc0d857390bdcf461a99099

Contents?: true

Size: 857 Bytes

Versions: 2

Compression:

Stored size: 857 Bytes

Contents

# frozen_string_literal: true

require 'active_support'

module NotificationSettings
  module Subscriber
    extend ActiveSupport::Concern

    included do
      has_many :notification_subscribables,
               as: :subscriber,
               class_name: 'NotificationSettings::Subscription',
               dependent: :destroy

      include NotificationSettings::Subscriber::InstanceMethods
    end

    module InstanceMethods
      def subscribe(subscribable, options = {})
        notification_subscribables.create(
          options.merge(subscribable: subscribable)
        )
      end

      def unsubscribe(subscribable)
        subscription = notification_subscribables.find_by(
          subscribable_id: subscribable.id,
          subscribable_type: subscribable.class.name
        )
        subscription&.destroy
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
notification-settings-3.0.2 lib/notification_settings/subscriber.rb
notification-settings-2.0.0 lib/notification_settings/subscriber.rb