diff --git a/app/models/user.rb b/app/models/user.rb index 771dbfea..1407748c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -34,7 +34,7 @@ class User < ApplicationRecord accepts_nested_attributes_for :members, allow_destroy: true default_scope { order("users.id ASC") } - scope :actives, -> { references(:members).where(members: { active: true }) } + scope :actives, -> { joins(:members).where(members: { active: true }) } scope :online_active, -> { where("sign_in_count > 0") } scope :notifications, -> { where(notifications: true) } diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index f8a3f7a2..a9ce2263 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -87,8 +87,14 @@ it "populates and array of users" do get "index" + expected_users = [user, another_user, admin_user, wrong_user, empty_email_user] + + expected_users.each_with_index do |user, i| + user.update!(last_sign_in_at: Time.current - i.days) + end + expect(assigns(:members).map(&:user)) - .to eq([user, another_user, admin_user, wrong_user, empty_email_user]) + .to eq(expected_users) end end @@ -326,7 +332,7 @@ it 'creates the user' do expect do - post :create, params: { user: Fabricate.to_params(:user, password: '1234test'), from_signup: 'true' } + post :create, params: { user: Fabricate.to_params(:user, password: '1234test'), from_signup: 'true' } end.to change(User, :count).by(1) expect(subject).to redirect_to(terms_path) end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 43835d9e..2b48e506 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -56,8 +56,7 @@ end describe ".actives" do - skip "should list users with active members" do - # The join at User.actives is failing + it "should list users with active members" do user_w_inactive = Fabricate(:user) user_w_active = Fabricate(:user) inactive_member = Fabricate(:member, user: user_w_inactive, active: false)