diff --git a/app/models/ban.rb b/app/models/ban.rb index 912f17619..310b79a45 100644 --- a/app/models/ban.rb +++ b/app/models/ban.rb @@ -14,6 +14,7 @@ class Ban < ApplicationRecord scope :unexpired, -> { where("bans.created_at + bans.duration > ?", Time.now) } scope :expired, -> { where("bans.created_at + bans.duration <= ?", Time.now) } + scope :active, -> { unexpired } def self.search(params) q = search_attributes(params, :id, :created_at, :updated_at, :duration, :reason, :user, :banner) diff --git a/app/models/user.rb b/app/models/user.rb index 03226fc26..5af3503d6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -132,7 +132,7 @@ class User < ApplicationRecord has_many :received_upgrades, class_name: "UserUpgrade", foreign_key: :recipient_id, dependent: :destroy has_many :purchased_upgrades, class_name: "UserUpgrade", foreign_key: :purchaser_id, dependent: :destroy has_many :user_events, dependent: :destroy - has_one :recent_ban, -> {order("bans.id desc")}, :class_name => "Ban" + has_one :active_ban, -> { active }, class_name: "Ban" has_one :email_address, dependent: :destroy has_many :api_keys, dependent: :destroy @@ -166,7 +166,7 @@ class User < ApplicationRecord end def ban_expired? - is_banned? && recent_ban.try(:expired?) + is_banned? && active_ban.blank? end end diff --git a/app/presenters/user_presenter.rb b/app/presenters/user_presenter.rb index 02fbd1591..b6e29e3cf 100644 --- a/app/presenters/user_presenter.rb +++ b/app/presenters/user_presenter.rb @@ -15,7 +15,7 @@ class UserPresenter def ban_reason if user.is_banned? - "#{user.recent_ban.reason}; expires #{user.recent_ban.expires_at} (#{user.bans.count} bans total)" + "#{user.active_ban.reason}; expires #{user.active_ban.expires_at} (#{user.bans.count} bans total)" else nil end diff --git a/app/views/users/_ban_notice.html.erb b/app/views/users/_ban_notice.html.erb index 4a04ef6ba..e423eb9c7 100644 --- a/app/views/users/_ban_notice.html.erb +++ b/app/views/users/_ban_notice.html.erb @@ -1,5 +1,5 @@