Sha256: 0dd08c1dffbd827de11fb19b962c7a5a8f49368f4afec9dfbdd1c1c3b00e8b03
Contents?: true
Size: 952 Bytes
Versions: 84
Compression:
Stored size: 952 Bytes
Contents
module WithDiscussionCreation::Subscription extend ActiveSupport::Concern included do has_many :subscriptions has_many :watched_discussions, -> { order(created_at: :desc) }, through: :subscriptions, source: :discussion organic_on :watched_discussions end def subscriptions_in_organization subscriptions.joins(:discussion).where(discussion: discussions_in_organization) end def subscribed_to?(discussion) discussion.subscription_for(self).present? end def subscribe_to!(discussion) watched_discussions << discussion unless subscribed_to? 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_in_organization.where(read: false).map(&:discussion) end end
Version data entries
84 entries across 84 versions & 2 rubygems