¿Cómo generar un enlace de desuscripción para correos electrónicos de Actionmailer?

Tengo una tabla de CLIENTES con los campos de identificación, nombre y correo electrónico y les estoy enviando correos electrónicos utilizando ActionMailer con SMTP de terceros.

Ahora quiero que los clientes también tengan la opción de suscripción, así que agregué la columna "suscripción" con el valor predeterminado como verdadero.

Ahora, ¿cómo generar un enlace que se pueda colocar en la plantilla de correo de vistas para que cuando el usuario haga clic en él, el valor de la suscripción cambie a falso para que en el futuro el cliente no reciba ningún correo electrónico? Tenga en cuenta que estos clientes no son usuarios de la aplicación Rails, por lo que no puedo usar lo que se sugiere aquí.Rails 3.2 ActionMailer maneja el enlace de cancelación de suscripción en los correos electrónicos

Encontré este enlaceCómo generar un enlace para cancelar la suscripción del correo electrónico. También me pareció útil, pero pensé que podría ser en 3 años, podríamos haber obtenido una mejor solución

Aquí está mi código completo -

#client.rb

attr_accessible :name, :company, :email

belongs_to :user
has_many :email_ids
has_many :emails, :through => :email_ids

before_create :add_unsubscribe_hash

private

def add_unsubscribe_hash
  self.unsubscribe_hash = SecureRandom.hex
end  

Aquí está el archivo Clients_controller.rb

# clients_controller.rb

  def new
    @client = Client.new

    respond_to do |format|
      format.html
      format.json { render json: @client }
      format.js
    end
  end

  def create
    @client = current_user.clients.new(params[:client])
    respond_to do |format|
      if @client.save
        @clients = current_user.clientss.all
        format.html { redirect_to @client }
        format.json { render json: @client }
        format.js
      else
        @clients = current_user.clients.all
        format.html { render action: "new" }
        format.json { render json: @client.errors, status: :error }
        format.js
      end
    end
  end

def unsubscribe
  @client = Client.find_by_unsubscribe_hash(params[:unsubscribe_hash])
  @client.update_attribute(:subscription, false)
end

El código funciona bien para los registros existentes y la cancelación de la suscripción funciona perfectamente, solo tengo problemas para crear nuevos clientes.

He usado @client en el método de cancelación de suscripción ya que estoy usando este objeto en la plantilla client_mailer.rb (usando @client o simplemente usando el cliente, ¡ambos están funcionando!)

EDIT 2 - _form.html.erb

<%= simple_form_for(@client, :html => {class: 'form-horizontal'}) do |f| %>

    <%= f.input :name, :label => "Full Name" %>
    <%= f.input :company %>
    <%= f.input :email %>
    <%= f.button :submit, class: 'btn btn-success' %>
<% end %>

He copiado la pila de pistas completa enhttp://jsfiddle.net/icyborg7/dadGS/

Respuestas a la pregunta(1)

Su respuesta a la pregunta