diff --git a/app/models/user.rb b/app/models/user.rb
index e2070fde49f1197756f10f3419f59c51a1d93ad7..0df50398fc57696444dc37d2dbfae19c08492098 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -11,6 +11,11 @@ class User < ActiveRecord::Base
   include Querying
   include SocialActions
 
+  scope :logged_in_since, lambda { |time| where('last_sign_in_at > ?', time) }
+  scope :monthly_actives, lambda { |time = Time.now| logged_in_since(time - 1.month) }
+  scope :daily_actives, lambda { |time = Time.now| logged_in_since(time - 1.day) }
+  scope :yearly_actives, lambda { |time = Time.now| logged_in_since(time - 1.year) }
+
   devise :database_authenticatable, :registerable,
          :recoverable, :rememberable, :trackable, :validatable,
          :timeoutable, :token_authenticatable, :lockable,
@@ -82,22 +87,6 @@ class User < ActiveRecord::Base
     User.joins(:contacts).where(:contacts => {:person_id => person.id})
   end
 
-  def self.monthly_actives(start_day = Time.now)
-    logged_in_since(start_day - 1.month)
-  end
-
-  def self.yearly_actives(start_day = Time.now)
-    logged_in_since(start_day - 1.year)
-  end
-
-  def self.daily_actives(start_day = Time.now)
-    logged_in_since(start_day - 1.day)
-  end
-
-  def self.logged_in_since(time)
-    where('last_sign_in_at > ?', time)
-  end
-
   def unread_notifications
     notifications.where(:unread => true)
   end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 5d72fdbd6357e77604118181c0e6d333c576371c..18d9945665de172918cb6445073697a4b911619d 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -22,6 +22,54 @@ describe User do
     end
   end
 
+  describe 'yearly_actives' do
+    it 'returns list which includes users who latest signed in within last year' do
+      user = FactoryGirl.build(:user)
+      user.last_sign_in_at = Time.now - 1.month
+      user.save
+      User.yearly_actives.should include user
+    end
+
+    it 'returns list which does not include users who did not sign in within last year' do
+      user = FactoryGirl.build(:user)
+      user.last_sign_in_at = Time.now - 2.year
+      user.save
+      User.yearly_actives.should_not include user
+    end
+  end
+
+  describe 'monthly_actives' do
+    it 'returns list which includes users who latest signed in within last month' do
+      user = FactoryGirl.build(:user)
+      user.last_sign_in_at = Time.now - 1.day
+      user.save
+      User.monthly_actives.should include user
+    end
+
+     it 'returns list which does not include users who did not sign in within last month' do
+      user = FactoryGirl.build(:user)
+      user.last_sign_in_at = Time.now - 2.month
+      user.save
+      User.monthly_actives.should_not include user
+    end
+  end
+
+  describe 'daily_actives' do
+    it 'returns list which includes users who latest signed in within last day' do
+      user = FactoryGirl.build(:user)
+      user.last_sign_in_at = Time.now - 1.hour
+      user.save
+      User.daily_actives.should include(user)
+    end
+
+    it 'returns list which does not include users who did not sign in within last day' do
+      user = FactoryGirl.build(:user)
+      user.last_sign_in_at = Time.now - 2.day
+      user.save
+      User.daily_actives.should_not include(user)
+    end
+  end
+
   context 'callbacks' do
     describe '#save_person!' do
       it 'saves the corresponding user if it has changed' do