2010-07-08 8 views
4

Je rencontre des problèmes lors de la suppression d'un magasin de disques actif.Magasin d'enregistrements actif Supprimer

Je veux supprimer sur la base des données de session:

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

ne semble pas fonctionner, mais:

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

semble fonctionner et:

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 

également doesnt travail.

Je cours la version rails 2.3.2, ruby ​​1.8.7.

Répondre

3

Vous pouvez simplement passer la méthode de suppression de Active Record l'ID de l'objet que vous souhaitez supprimer:

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

Sur une autre note, bien sûr où l'attribut .data est censé provenir de dans l'exemple ci-dessus. Session.find (: all) renvoie un tableau d'objets Session que vous parcourez ensuite. Session n'a pas de colonne userid à moins que vous ne piratiez le magasin Session par défaut pour l'ajouter.

+0

chaque utilisateur qui se connecte obtient un ID utilisateur. S'ils ne se connectent pas, alors cet ID utilisateur est nul, donc je n'ai pas besoin de m'en soucier. Merci. – Andy