活动记录存储删除

时间:2010-07-08 23:38:01

标签: ruby-on-rails ruby activerecord session-timeout

我无法从活动记录存储中删除。

我想根据会话数据删除:

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

也不起作用。

我正在运行版本rails 2.3.2,ruby 1.8.7。

1 个答案:

答案 0 :(得分:3)

您只需将Active Record的delete方法传递给您要删除的对象的ID:

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

另一方面,请确保在上面的示例中.data属性的来源。 Session.find(:all)将返回一个Session对象数组,然后迭代。会话没有用户标识列,除非您正在攻击默认的会话存储以添加它。