Refactor User.total_users into a scope

This commit is contained in:
Jonne Haß 2015-02-27 16:30:28 +01:00
parent 6432bbe67b
commit 99ea156e1c
4 changed files with 18 additions and 22 deletions

View file

@ -15,6 +15,7 @@ class User < ActiveRecord::Base
scope :daily_actives, ->(time = Time.now) { logged_in_since(time - 1.day) } scope :daily_actives, ->(time = Time.now) { logged_in_since(time - 1.day) }
scope :yearly_actives, ->(time = Time.now) { logged_in_since(time - 1.year) } scope :yearly_actives, ->(time = Time.now) { logged_in_since(time - 1.year) }
scope :halfyear_actives, ->(time = Time.now) { logged_in_since(time - 6.month) } scope :halfyear_actives, ->(time = Time.now) { logged_in_since(time - 6.month) }
scope :active, -> { joins(:person).where(people: {closed_account: false}).where.not(username: nil) }
devise :token_authenticatable, :database_authenticatable, :registerable, devise :token_authenticatable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :recoverable, :rememberable, :trackable, :validatable,
@ -526,12 +527,8 @@ class User < ActiveRecord::Base
end end
end end
def self.total_users
User.joins(:person).where(:people => {:closed_account => false}).where.not(:username => nil)
end
private private
def clearable_fields def clearable_fields
self.attributes.keys - ["id", "username", "encrypted_password", self.attributes.keys - ["id", "username", "encrypted_password",
"created_at", "updated_at", "locked_at", "created_at", "updated_at", "locked_at",

View file

@ -48,10 +48,7 @@ class StatisticsPresenter
end end
def total_users def total_users
@total_users ||= User.joins(:person) @total_users ||= User.active.count
.where(people: {closed_account: false})
.where.not(username: nil)
.count
end end
def monthly_users def monthly_users

View file

@ -1089,18 +1089,20 @@ describe User, :type => :model do
@user.after_database_authentication @user.after_database_authentication
expect(@user.remove_after).to eq(nil) expect(@user.remove_after).to eq(nil)
end end
end
describe "total_users" do describe "active" do
before do before do
@user1 = FactoryGirl.build(:user, :username => nil) invited_user = FactoryGirl.build(:user, username: nil)
@user1.save(:validate => false) invited_user.save(validate: false)
@user2 = FactoryGirl.create(:user)
@user2.person.closed_account = true closed_account = FactoryGirl.create(:user)
@user2.save closed_account.person.closed_account = true
closed_account.save
end end
it "returns total_users excluding closed accounts & users without usernames" do it "returns total_users excluding closed accounts & users without usernames" do
expect(User.total_users.count).to eq 5 #5 users from fixtures expect(User.active.count).to eq 6 # 6 users from fixtures
end end
end end
end end

View file

@ -52,7 +52,7 @@ describe StatisticsPresenter do
"network" => "Diaspora", "network" => "Diaspora",
"version" => AppConfig.version_string, "version" => AppConfig.version_string,
"registrations_open" => AppConfig.settings.enable_registrations?, "registrations_open" => AppConfig.settings.enable_registrations?,
"total_users" => User.total_users.count, "total_users" => User.active.count,
"active_users_halfyear" => User.halfyear_actives.count, "active_users_halfyear" => User.halfyear_actives.count,
"active_users_monthly" => User.monthly_actives.count, "active_users_monthly" => User.monthly_actives.count,
"local_posts" => @presenter.local_posts, "local_posts" => @presenter.local_posts,