2010-03-17 5 views
8

J'ai une application de petits rails. Je veux mettre la piste de vérification là-dedans. Fondamentalement, quand un nouvel utilisateur est ajouté. il insérera une ligne dans le tableau AuditTrailUsers avec le nouveau user_id créé et connecté dans user_id des utilisateurs.comment construire des pistes d'audit dans les rails application

Je pense à utiliser le rappel de rails before_save pour cela. Cependant, je ne suis pas sûr que cela fonctionnera.

Imaginez que j'ai model/Users.rb et model/AuditTrailUser.rb

class User < ActiveRecord::Base 
    validates_presence_of :userid, :password 
     before_save :insert_audit 

    def self.authenticate(userid, password) 
     user = self.find_by_userid_and_password(userid, password)  
    user 
    end 

    ##implement insert_audit 

end 

Comment puis-je mettre en œuvre insert_audit pour qu'il prenne dans un ID utilisateur (de l'utilisateur connecté) afin qu'il puisse passer à AuditTrailUser lors de l'appel AuditTrailUser.create(...).

Si je passe connecté l'ID utilisateur de l'utilisateur ... alors je dois appeler explicitement before_save partout ...

Je suis nouveau sur les rails.

Répondre

12

Utilisez la gemme Audited pour consigner tous les changements apportés à vos modèles Rails.

+2

Il existe une meilleure alternative à acts_as_audited Vestal versions plugin (http://github.com/laserlemon/vestal_versions). Discuté sur SO http://stackoverflow.com/questions/2323505/how-to-keep-track-of-model-history-with-mapping-table-in-ruby-on-rails –

+2

Autre chose intéressante: paper_trail https: //github.com/airblade/paper_trail. Railscasts lien '255-undo-with-paper-trail' http://railscasts.com/episodes/255-undo-with-paper-trail –

+1

La gemme Audited est encore assez bonne et a été tenue en grande partie à jour. Il a aussi quelques fonctionnalités intéressantes que les autres manquent. –

Questions connexes