Search code examples
ruby-on-railsdevisemailerpassword-recovery

Custom variables in Devise reset password instructions?


I need to be able to customise the rails devise mailer view for reset password instructions.

for this I need to do two things.

  1. Specify a custom URL for the link, so that its a host/domain based on a certain business logic. This host and domain comes from the URL in the browser, i.e. the request object, when the user clicks forgot password. So I do not have the request object in delayed_job to process it as I need, hence I need to be able to do this at some point in the delayed_job that is sending the email.

  2. Pass custom variables to the mailer view, so that I can add in various other logic for the view, hiding and showing bits as I need.

Can anyone help? I can see that you can generate the mailer views for devise, but I need to be able pass over various items to it also. Do I need to somehow override the functions myself in my User model and password controller for example?


Solution

  • so, after much ado and searching and hacking around with stuff... this is just not possible. so I ended up writing my own mailer and bypassing the devise reset password methods in the controllers, to generate my own reset token, set my variables I needed, called my usermailer.... and embedded the devise url in my mail to get it back calling devise once the password reset link was clicked, and all was fine then....

    I hated having to rewrite the logic, but in the end its the quickest and cleanest solution.

    One approach that nearly worked, was using a non activerecord attribute on my user model to store the bits I needed and "hacking" that into the @resource in the devise view, but it was causing some grief in devise doing so, as a result, I went with the option above...