我正在使用activerecord-session_store
gem在数据库中存储会话。
我在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
e.g。
<% @sessions.each do |session| %>
<% if Marshal.load(Base64.decode64(session.data))['user_id'] == current_user.id %>
<!-- LIST SESSION -->
<% end %>
<% end %>
答案 0 :(得分:2)
如果您使用 @echo off
if not exist c:\OldDir.txt echo. > c:\OldDir.txt
dir /b "C:\Spektra\Gelen" > c:\NewDir.txt
set equal=no
fc c:\OldDir.txt c:\NewDir.txt | find /i "no differences" > nul && set equal=yes
copy /y c:\Newdir.txt c:\OldDir.txt > nul
if %equal%==yes goto :eof
rem Your batch file lines go here
**********
c:\unzip.exe (the_new_files) -d (destination)
*******************
作为后端,则可能只需设置序列化to be :json
:
PostgreSQL
并针对postgres查询ActiveRecord::SessionStore::Session.serializer = :json
字段。
如果您使用json
,则可以实现自己的会话类:
MySQL
并实现ActionDispatch::Session::ActiveRecordStore.session_class = MySessionClass
挂钩,明确地将pre_commit
保存在表格的相应列中。之后只需查询此列。
答案 1 :(得分:1)
如果我没弄错,您可以在控制器中使用相同的呼叫current_user
;因此,如果您在该控制器/路由上设置before_filter
,则可以使用相同的代码来过滤current_user.id
类似的东西:
before_filter :get_user_session
def get_user_session
Session.all.each do |session|
if Marshal.load(Base64.decode64(session.data))['user_id'] == current_user.id
# do things
end
end
end