2010-07-08 2 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) 

을 .DATA 속성은 위의 예에서 오는 의미하는지 또 다른 메모에. Session.find (: all)는 반복되는 Session 객체의 배열을 반환합니다. 세션을 추가하기 위해 기본 세션 저장소를 해킹하지 않는 한 Session에는 사용자 ID 열이 없습니다.

+0

로그온하는 모든 사용자는 사용자 ID를 얻습니다. 그들이 로그인하지 않으면이 사용자 ID는 nil이므로 걱정할 필요가 없습니다. 감사. – Andy