Sha256: 24d86fbbedb471bb721ba8652487d3498624b4eb8581e86823ea5f4a0f4fa139

Contents?: true

Size: 762 Bytes

Versions: 37

Compression:

Stored size: 762 Bytes

Contents

module WithDiscussionCreation::Subscription
  extend ActiveSupport::Concern

  included do
    has_many :discussions, foreign_key: 'initiator_id'
    has_many :subscriptions
    has_many :watched_discussions, through: :subscriptions, source: :discussion
  end

  def subscribed_to?(discussion)
    discussion.subscription_for(self).present?
  end

  def subscribe_to!(discussion)
    watched_discussions << discussion
  end

  def unsubscribe_to!(discussion)
    watched_discussions.delete(discussion)
  end

  def toggle_subscription!(discussion)
    if subscribed_to?(discussion)
      unsubscribe_to!(discussion)
    else
      subscribe_to!(discussion)
    end
  end

  def unread_discussions
    subscriptions.where(read: false).map(&:discussion)
  end
end

Version data entries

37 entries across 37 versions & 2 rubygems

Version Path
mumuki-domain-6.5.1 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.5.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.4.3 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.4.2 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.4.1 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.4.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.2.2 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.2.1 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.3.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.2.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.1.5 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.0.4 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.1.4 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.1.3 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.1.2 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.0.3 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.0.1 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-6.0.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-laboratory-5.13.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-laboratory-5.12.1 app/models/concerns/with_discussion_creation/subscription.rb