2010-03-17 16 views
8

Mam aplikację małej szyny. Chcę umieścić w nim ślad audytu. Zasadniczo po dodaniu nowego użytkownika. wstawi wiersz w tabeli AuditTrailUsers z nową nazwą użytkownika utworzoną i zalogowaną w user_id użytkownika.jak budować ścieżki audytu w aplikacji szyny

Zastanawiam się, czy nie użyć do tego celu wywołania zwrotnego szyny before_save. Jednak nie jestem pewien, czy to zadziała.

Wyobraźmy mam model/Users.rb i 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 

Jak mogę wdrożyć insert_audit tak, że trwa w identyfikatorze użytkownika (od zalogowanego użytkownika), dzięki czemu może on przekazać je do AuditTrailUser Dzwoniąc AuditTrailUser.create(...).

Gdybym przechodzą w identyfikatorze użytkownika zalogowanego w użytkownika ... wtedy będę musiał jawnie wywołać before_save wszędzie ...

Jestem nowy na szynach.

Odpowiedz

12

Użyj klejnotu Audited, aby rejestrować wszystkie zmiany w modelach Rails.

+2

Istnieje lepsza alternatywa dla act_as_audited wersji pluginów Vestal (http://github.com/laserlemon/vestal_versions). Dyskusja na SO http://stackoverflow.com/questions/2323505/how-to-keep-track-of-model-history-with-mapping-table-in-ruby-on-on- –

+2

Inną interesującą kwestią jest paper_trail https: //github.com/airblade/paper_trail. Railscasts link "255-undo-with-paper-trail" http://railscasts.com/episodes/255-undo-with-paper-trail –

+1

Audited gem jest wciąż całkiem niezły i utrzymany w dużej mierze na czasie. Ma również kilka ciekawych funkcji, których nie mają inni. –

Powiązane problemy