Files
fizzy/app/models/user/notifiable.rb
T

30 lines
758 B
Ruby

module User::Notifiable
extend ActiveSupport::Concern
included do
has_many :notifications, dependent: :destroy
has_many :notification_bundles, class_name: "Notification::Bundle", dependent: :destroy
generates_token_for :unsubscribe, expires_in: 1.month
end
def bundle(notification)
transaction do
find_or_create_bundle_for(notification)
end
end
private
def find_or_create_bundle_for(notification)
find_bundle_for(notification) || create_bundle_for(notification)
end
def find_bundle_for(notification)
notification_bundles.pending.containing(notification).last
end
def create_bundle_for(notification)
notification_bundles.create!(starts_at: notification.created_at)
end
end