Class: ActivityNotification::Subscription

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
SubscriptionApi
Defined in:
lib/activity_notification/models/subscription.rb

Overview

Subscription model implementation generated by ActivityNotification.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SubscriptionApi

#optional_target_names, #subscribe, #subscribe_to_email, #subscribe_to_optional_target, #subscribing_to_optional_target?, to_optional_target_key, to_optional_target_subscribed_at_key, to_optional_target_unsubscribed_at_key, #unsubscribe, #unsubscribe_to_email, #unsubscribe_to_optional_target

Class Method Details

.filtered_by_key ⇒ ActiveRecord_AssociationRelation<Subscription>

Selects filtered subscriptions by key.

Examples:

Get filtered subscriptions of the @user with key 'comment.reply'

@subscriptions = @user.subscriptions.filtered_by_key('comment.reply')

Parameters:

  • key (String) —

    Key of the subscription for filter

Returns:

  • (ActiveRecord_AssociationRelation<Subscription>) —

    Array or database query of filtered subscriptions



41
# File 'lib/activity_notification/models/subscription.rb', line 41

scope :filtered_by_key,     ->(key)          { where(key: key) }

.filtered_by_options ⇒ ActiveRecord_AssociationRelation<Notificaion>

Selects filtered subscriptions by key with filter options.

Examples:

Get filtered subscriptions of the @user with key 'comment.reply'

@subscriptions = @user.subscriptions.filtered_by_key('comment.reply')

Get custom filtered subscriptions of the @user

@subscriptions = @user.subscriptions.filtered_by_options({ custom_filter: ["created_at >= ?", time.hour.ago] })

Parameters:

  • options (Hash) —

    Options for filter

Returns:

  • (ActiveRecord_AssociationRelation<Notificaion>) —

    Array or database query of filtered subscriptions



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/activity_notification/models/subscription.rb', line 53

scope :filtered_by_options, ->(options = {}) {
  options = ActivityNotification.cast_to_indifferent_hash(options)
  filtered_subscriptions = all
  if options.has_key?(:filtered_by_key)
    filtered_subscriptions = filtered_subscriptions.filtered_by_key(options[:filtered_by_key])
  end
  if options.has_key?(:custom_filter)
    filtered_subscriptions = filtered_subscriptions.where(options[:custom_filter])
  end
  filtered_subscriptions
}

.filtered_by_target ⇒ ActiveRecord_AssociationRelation<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:

  • (ActiveRecord_AssociationRelation<Subscription>) —

    Array or database query of filtered subscriptions



33
# File 'lib/activity_notification/models/subscription.rb', line 33

scope :filtered_by_target,  ->(target)       { where(target: target) }

Instance Method Details

#earliest_order ⇒ ActiveRecord_AssociationRelation<Subscription>

Orders by earliest (older) first as created_at: :asc.

Returns:

  • (ActiveRecord_AssociationRelation<Subscription>) —

    Database query of subscriptions ordered by earliest first



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

scope :earliest_order,            -> { order(created_at: :asc) }

#earliest_subscribed_order ⇒ ActiveRecord_AssociationRelation<Subscription>

Orders by earliest (older) first as subscribed_at: :asc.

Returns:

  • (ActiveRecord_AssociationRelation<Subscription>) —

    Database query of subscriptions ordered by earliest subscribed_at first



79
# File 'lib/activity_notification/models/subscription.rb', line 79

scope :earliest_subscribed_order, -> { order(subscribed_at: :asc) }

#key_order ⇒ ActiveRecord_AssociationRelation<Subscription>

Orders by key name as key: :asc.

Returns:

  • (ActiveRecord_AssociationRelation<Subscription>) —

    Database query of subscriptions ordered by key name



83
# File 'lib/activity_notification/models/subscription.rb', line 83

scope :key_order,                 -> { order(key: :asc) }

#latest_order ⇒ ActiveRecord_AssociationRelation<Subscription>

Orders by latest (newest) first as created_at: :desc.

Returns:

  • (ActiveRecord_AssociationRelation<Subscription>) —

    Database query of subscriptions ordered by latest first



67
# File 'lib/activity_notification/models/subscription.rb', line 67

scope :latest_order,              -> { order(created_at: :desc) }

#latest_subscribed_order ⇒ ActiveRecord_AssociationRelation<Subscription>

Orders by latest (newest) first as subscribed_at: :desc.

Returns:

  • (ActiveRecord_AssociationRelation<Subscription>) —

    Database query of subscriptions ordered by latest subscribed_at first



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

scope :latest_subscribed_order,   -> { order(subscribed_at: :desc) }

#target ⇒ Object

Belongs to target instance of this subscription as polymorphic association.

Returns:

  • (Object) —

    Target instance of this subscription



10
# File 'lib/activity_notification/models/subscription.rb', line 10

belongs_to :target,               polymorphic: true