From f56309f5f03f28d35c5e36b8cab282a03522370a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 2 Apr 2024 09:51:34 -0400 Subject: [PATCH] Add `by_latest_used` scope, move admin area recent IPs to partial (#29497) --- app/models/user_ip.rb | 2 ++ app/views/admin/accounts/_local_account.html.haml | 8 +------- app/views/admin/accounts/_user_ip.html.haml | 5 +++++ 3 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 app/views/admin/accounts/_user_ip.html.haml diff --git a/app/models/user_ip.rb b/app/models/user_ip.rb index 87b86a24d43..a6da2c07401 100644 --- a/app/models/user_ip.rb +++ b/app/models/user_ip.rb @@ -15,4 +15,6 @@ class UserIp < ApplicationRecord self.primary_key = :user_id belongs_to :user + + scope :by_latest_used, -> { order(used_at: :desc) } end diff --git a/app/views/admin/accounts/_local_account.html.haml b/app/views/admin/accounts/_local_account.html.haml index 82197cda43d..3ed392cd1a5 100644 --- a/app/views/admin/accounts/_local_account.html.haml +++ b/app/views/admin/accounts/_local_account.html.haml @@ -62,13 +62,7 @@ %td %time.formatted{ datetime: account.created_at.iso8601, title: l(account.created_at) }= l account.created_at %td -- recent_ips = account.user.ips.order(used_at: :desc).to_a -- recent_ips.each_with_index do |recent_ip, i| - %tr - - if i.zero? - %th{ rowspan: recent_ips.size }= t('admin.accounts.most_recent_ip') - %td= recent_ip.ip - %td= table_link_to 'search', t('admin.accounts.search_same_ip'), admin_accounts_path(ip: recent_ip.ip) + = render partial: 'admin/accounts/user_ip', collection: account.user.ips.by_latest_used %tr %th= t('admin.accounts.most_recent_activity') %td diff --git a/app/views/admin/accounts/_user_ip.html.haml b/app/views/admin/accounts/_user_ip.html.haml new file mode 100644 index 00000000000..1938cf7edf0 --- /dev/null +++ b/app/views/admin/accounts/_user_ip.html.haml @@ -0,0 +1,5 @@ +%tr + - if user_ip_iteration.first? + %th{ rowspan: user_ip_iteration.size }= t('admin.accounts.most_recent_ip') + %td= user_ip.ip + %td= table_link_to 'search', t('admin.accounts.search_same_ip'), admin_accounts_path(ip: user_ip.ip)