Class: ActivityNotification::ORM::Mongoid::Subscription

Inherits:
Object
  • Object
show all
Includes:
Association, SubscriptionApi, Mongoid::Attributes::Dynamic, Mongoid::Document, Mongoid::Timestamps
Defined in:
lib/activity_notification/orm/mongoid/subscription.rb

Overview

Subscription model implementation generated by ActivityNotification.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SubscriptionApi

#as_json, #optional_target_names, #subscribe, #subscribe_to_email, #subscribe_to_optional_target, #subscribing_to_optional_target?, #unsubscribe, #unsubscribe_to_email, #unsubscribe_to_optional_target

Methods included from Association

#update

Methods included from Mongoid::Document

#as_json

Class Method Details

.filtered_by_targetMongoid::Criteria<Subscription>

Selects filtered subscriptions by target instance. ActivityNotification::Subscription.filtered_by_target(@user) is the same as @user.subscriptions

Parameters:

  • target (Object)

    Target instance for filter

Returns:

  • (Mongoid::Criteria<Subscription>)

    Database query of filtered subscriptions



60
# File 'lib/activity_notification/orm/mongoid/subscription.rb', line 60

scope :filtered_by_target,  ->(target) { filtered_by_association("target", target) }

.uniq_keysArray<String>

Selects unique keys from query for subscriptions.

Returns:

  • (Array<String>)

    Array of subscription unique keys



84
85
86
87
88
# File 'lib/activity_notification/orm/mongoid/subscription.rb', line 84

def self.uniq_keys
  # distinct method cannot keep original sort
  # distinct(:key)
  pluck(:key).uniq
end

Instance Method Details

#for_notifiableMongoid::Criteria<Subscription>

Selects subscriptions for a specific notifiable instance.

Parameters:

  • notifiable (Object)

    Notifiable instance for filter

Returns:

  • (Mongoid::Criteria<Subscription>)

    Database query of filtered subscriptions



80
# File 'lib/activity_notification/orm/mongoid/subscription.rb', line 80

scope :for_notifiable,            ->(notifiable) { where(notifiable_type: notifiable.class.name, notifiable_id: notifiable.id) }

#instance_level_onlyMongoid::Criteria<Subscription>

Selects instance-level subscriptions only (where notifiable is present).

Returns:

  • (Mongoid::Criteria<Subscription>)

    Database query of instance-level subscriptions



75
# File 'lib/activity_notification/orm/mongoid/subscription.rb', line 75

scope :instance_level_only,       -> { where(:notifiable_type.ne => nil) }

#key_level_onlyMongoid::Criteria<Subscription>

Selects key-level subscriptions only (where notifiable is nil).

Returns:

  • (Mongoid::Criteria<Subscription>)

    Database query of key-level subscriptions



71
# File 'lib/activity_notification/orm/mongoid/subscription.rb', line 71

scope :key_level_only,            -> { where(notifiable_type: nil) }

#notifiableObject?

Belongs to notifiable instance of this subscription as polymorphic association (optional). When present, this subscription is scoped to a specific notifiable instance. When nil, this is a key-level subscription that applies globally.

Returns:

  • (Object, nil)

    Notifiable instance of this subscription



26
# File 'lib/activity_notification/orm/mongoid/subscription.rb', line 26

belongs_to_polymorphic_xdb_record :notifiable, optional: true

#targetObject

Belongs to target instance of this subscription as polymorphic association.

Returns:

  • (Object)

    Target instance of this subscription



19
# File 'lib/activity_notification/orm/mongoid/subscription.rb', line 19

belongs_to_polymorphic_xdb_record :target

#whereMongoid::Criteria<Subscription>

Selects filtered subscriptions by type of the object. Filtering with ActivityNotification::Subscription is defined as default scope.

Returns:

  • (Mongoid::Criteria<Subscription>)

    Database query of filtered subscriptions



51
# File 'lib/activity_notification/orm/mongoid/subscription.rb', line 51

default_scope -> { where(_type: "ActivityNotification::Subscription") }

#with_targetMongoid::Criteria<Subscription>

Includes target instance with query for subscriptions.

Returns:

  • (Mongoid::Criteria<Subscription>)

    Database query of subscriptions with target



64
# File 'lib/activity_notification/orm/mongoid/subscription.rb', line 64

scope :with_target,               -> { }