Я использую камень activerecord-session_store
для хранения сеансов в базе данных.Список сеансов для текущего пользователя только в Rails
я список сессий с помощью этого метода в моем SessionsController:
def index
@sessions = Session.all
end
Однако это список всех сеансов в приложении, а не только те, в настоящее время вошел в систему. Таблица базы данных для сеансов имеет следующие столбцы: id, session_id, data, created_at, updated_at
, поэтому для фильтрации не существует user_id
.
я могу получить доступ к user_id
в данной сессии с Marshal.load(Base64.decode64(session.data))['user_id']
Как я могу использовать эти данные, чтобы отфильтровать список? Пока все, о чем я могу думать, это сделать условное в представлении, которое сравнивает его с current_user.id
например.
<% @sessions.each do |session| %>
<% if Marshal.load(Base64.decode64(session.data))['user_id'] == current_user.id %>
<!-- LIST SESSION -->
<% end %>
<% end %>