2010-07-08 87 views
4

我在从活动记录存储中删除时遇到问题。活动记录存储删除

我想基于会话数据删除:

ActiveRecord::SessionStore::Session.find(:all).each do |s| 
    if s.data[:userid] == 1234 
    s.destroy 
    end 
end 

似乎并没有工作,但:

ActiveRecord::SessionStore::Session.delete_all(["updated_at < ?", 12.hours.ago]) 

似乎工作和:

ActiveRecord::SessionStore::Session.find(:all).each do |s| 
    if s.data[:userid] == 1234 
    ActiveRecord::SessionStore::Session.delete_all("session_id = ?", s.session_id) 
    end 
end 

也犯规工作。

我正在运行的版本轨道2.3.2,红宝石1.8.7。

回答

3

您只需通过活动记录的删除方法,你要删除的对象的ID:

ActiveRecord::SessionStore::Session.delete(1234) 

在另一方面,确定其中。数据属性,就是要在上面的例子中来。 Session.find(:all)将返回一个Session对象的数组,然后迭代它。会话没有userid列,除非您正在窃取默认的Session存储以添加它。

+0

每个登录用户都获得一个用户标识。如果他们没有登录,那么这个用户名为零,所以我不需要担心。谢谢。 – Andy 2010-07-10 23:40:04