4 module Subscribeable #:nodoc:
6 def self.included(base)
7 base.extend ClassMethods
11 def acts_as_subscribeable
12 has_many :subscriptions, :as => :subscribeable
13 include RailsJitsu::Acts::Subscribeable::InstanceMethods
14 extend RailsJitsu::Acts::Subscribeable::SingletonMethods
18 # This module contains class methods
19 module SingletonMethods
20 # Helper method to lookup for subscriptions for a given object.
21 # This method is equivalent to obj.subscription
22 def find_subscriptions_for(obj)
23 # subscribeable = ActiveRecord::Base.send(:class_name_of_active_record_descendant, self).to_s
24 obj_class = obj.class.to_s
26 Subscription.find(:all,
27 :conditions => ["subscribeable_id = ? and subscribeable_type = ?", obj.id, obj_class],
28 :order => "created_at DESC"
32 def user_subscribed?(obj, user)
33 obj_class = obj.class.to_s
35 Subscription.find(:first,
36 :conditions => ["user_id = ? and subscribeable_id = ? and subscribeable_type = ?", user.id, obj.id, obj_class],
37 :order => "created_at DESC"
41 def add_subscription(obj, user)
42 obj_class = obj.class.to_s
44 Subscription.create(:user_id => user.id, :subscribeable_id => obj.id, :subscribeable_type => obj_class,
45 :created_at => Time.now, :updated_at => Time.now) unless user_subscribed?(obj, user)
48 def remove_subscription(obj, user)
49 obj_class = obj.class.to_s
51 Subscription.delete_all(
52 ["user_id = ? and subscribeable_id = ? and subscribeable_type = ?", user.id, obj.id, obj_class]
57 # This module contains instance methods
58 module InstanceMethods