I want to log the user who destroyed a record using before_destroy
callback. But, I dont know how to pass arguments to before_destroy
(and I am not sure if it is possible). Maybe I am dealing this in the wrong way. Any other perspective to do this will also do.
I got it. I can add a virtual attribute to the model (something like attr_accessor :destroyer
or something) and you can access it in the method for before_destroy
callback. Something like:
Controller
@record = Record.find(params[:id])
@record.destroyer = current_user
@record.destroy
Model
attr_accessor :destroyer
before_destroy :log_destroyer
def log_destroyer
if destroyer
code for logging
end
end
Courtesy: Azolo who answered my question in SO. In case anyone is wondering how to do it