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