Module: Integral::Notification::Subscribable

Extended by:
ActiveSupport::Concern
Defined in:
app/models/concerns/integral/notification/subscribable.rb

Instance Method Summary collapse

Instance Method Details

#notifiable_usersObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'app/models/concerns/integral/notification/subscribable.rb', line 38

def notifiable_users
  object_notification_subscriptions = notification_subscriptions.group_by(&:state)
  object_notification_subscription_user_ids = object_notification_subscriptions.values.flatten.map(&:user_id)

  class_notification_subscriptions = self.class.notification_subscriptions(omit_users: object_notification_subscription_user_ids).group_by(&:state)
  class_notification_subscription_user_ids = class_notification_subscriptions.values.flatten.map(&:user_id)

  top_level_notification_subscription_user_ids = Integral::User.where(notify_me: true).where.not(id: object_notification_subscription_user_ids + class_notification_subscription_user_ids).pluck(:id)

  notifiable_user_ids = (object_notification_subscriptions['subscribed']&.map(&:user_id) || []) + (class_notification_subscriptions['subscribed']&.map(&:user_id) || []) + top_level_notification_subscription_user_ids
  notifiable_user_ids -= [PaperTrail.request.whodunnit]

  User.find(notifiable_user_ids).select { |user| Pundit.policy!(user, self).receives_notifications? }
end

#subscribable?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'app/models/concerns/integral/notification/subscribable.rb', line 34

def subscribable?
  true
end