Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4f44d2e

Browse files
authoredJul 30, 2021
Refactor where (public: true) into scope (#280)
* add are_public scope to user * add user model scope spec
1 parent bf1dd39 commit 4f44d2e

File tree

5 files changed

+18
-5
lines changed

5 files changed

+18
-5
lines changed
 

‎app/controllers/application_controller.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def visible_users
2828
if signed_in?
2929
current_user.visible_for_signed_in_users
3030
else
31-
User.where(public: true).sort_by { |x| x.transliterate_last_name }
31+
User.are_public.sort_by { |x| x.transliterate_last_name }
3232
end
3333
end
3434

‎app/controllers/maps_controller.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ class MapsController < ApplicationController
1010

1111
def show
1212
if ["de", "at", "ch"].include?(map_params[:country])
13-
@users = User.where(public: true, country: map_params[:country])
13+
@users = User.are_public
14+
.where(country: map_params[:country])
1415
.sort_by { |x| x.city }
1516
@center = CENTERS[map_params[:country]]
1617
@zoom = ZOOMS[map_params[:country]]

‎app/controllers/users_controller.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def index
3030
if current_user
3131
@users = current_user.visible_for_signed_in_users
3232
else
33-
@users = User.where(public: true).order("upper(name) ASC")
33+
@users = User.are_public.order("upper(name) ASC")
3434
end
3535
end
3636

‎app/models/user.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ class User < ActiveRecord::Base
7676

7777
scope :alphas, -> { where(alpha: true) }
7878
scope :admin, -> { where(admin: true) }
79+
scope :are_public, -> { where(public: true) }
7980

8081
def self.sort_by_name(users)
8182
users.sort { |a, b| a.last_name <=> b.last_name }
@@ -87,7 +88,7 @@ def visible_for_signed_in_users
8788
User.all.sort_by { |x| x.transliterate_last_name }
8889
else
8990
# Adds the user's id to the array of public ids
90-
visible_ids = User.where(public: true).pluck(:id) << id
91+
visible_ids = User.are_public.pluck(:id) << id
9192
User.where(id: visible_ids).sort_by { |x| x.transliterate_last_name }
9293
end
9394
end

‎spec/models/user_spec.rb

+12-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ def make_user(attributes = {})
2020
end
2121

2222
describe "sorting by user name" do
23-
2423
it "can sort users with only one name" do
2524
user1 = make_user(name: "Eva", email: "eva@email.com")
2625
user2 = make_user(name: "Sabine Sauer", email: "sabine@email.com")
@@ -51,4 +50,16 @@ def make_user(attributes = {})
5150
expect(users[2]).to eq user2
5251
end
5352
end
53+
54+
describe "are_public scope" do
55+
it "includes public users" do
56+
user1 = make_user(name: "Eva Maria Mahler",email: "evamaria@email.com", public: true)
57+
expect(User.are_public).to include(user1)
58+
end
59+
60+
it "excludes non-pub users" do
61+
user1 = make_user(name: "Eva Maria Mahler",email: "evamaria@email.com", public: false)
62+
expect(User.are_public).to_not include(user1)
63+
end
64+
end
5465
end

0 commit comments

Comments
 (0)
Please sign in to comment.