【问题标题】:Active Record Store Delete活动记录存储删除
【发布时间】:2010-07-08 23:38:01
【问题描述】:

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

我想根据会话数据删除:

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。

【问题讨论】:

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


    【解决方案1】:

    你可以通过 Active Record 的 delete 方法传递你想要删除的对象的 ID:

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

    另一方面,请确定上例中 .data 属性的来源。 Session.find(:all) 将返回一个 Session 对象数组,然后您将对其进行迭代。 Session 没有用户 ID 列,除非您破解默认的 Session 存储来添加它。

    【讨论】:

    • 每个登录的用户都会获得一个用户 ID。如果他们没有登录,那么这个用户 ID 是零,所以我不需要担心。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2020-01-21
    • 1970-01-01
    相关资源
    最近更新 更多