Na podstawie przepisów i tego co na necie wygrzebałem ukulałem coś takiego:
[code=ruby]class ActionSweeper < ActionController::Caching::Sweeper
observe User
def after_destroy(record)
log(record, “DESTROY”)
end
def after_create(record)
log(record, “CREATE”)
end
def after_update(record)
log(record, “UPDATE”)
end
def log(record, event, user = controller.session[:user])
ActionTrail.create(:record_id => record.id, :record_type => record.type.name, :event => event, :user_id => user)
end
end[/code]
Jednak nie wiem jak mógłbym porównać dane rekordu sprzed i po edycji? Zależy mi na tym abym mógł napisać kod który dostanie dany obiekt przed edycją i po edycji, z resztą sobie poradzę. Jednak z tym mam problem…
EDIT:
2gi problem polega na tym, że to nie działa… W user_controller.rb mam wpis cache_sweeper :action_sweeper
Oraz włączone cachowanie w środowisku.
Akcje na User wykonuję spod konsoli, robi to jakąś różnice?
EDIT2:
Zmieniłem to na observera, coś już więcej działa, niestety z poziomu konsoli wywala się przy zmiennej controller.