Как создать ссылку отмены подписки на электронные письма Actionmailer?

У меня есть таблица КЛИЕНТОВ с полями id, name и email, и я отправляю им электронные письма, используя ActionMailer со сторонним SMTP.

Теперь я хочу, чтобы клиенты тоже имели возможность подписки, поэтому я добавил "подписка" столбец со значением по умолчанию как true.

Теперь, как сгенерировать ссылку, которую можно поместить в шаблон почтового представления, чтобы, когда пользователь щелкает по ней, значение подписки меняется на false, поэтому в будущем клиент не будет ' получить письмо? Обратите внимание, что эти клиенты не являются пользователями моего приложения rails, поэтому я могут использует то, что было предложено здесьRails 3.2 ActionMailer обрабатывает ссылку для отмены подписки в электронных письмах

Я нашел эту ссылкукак сгенерировать ссылку для отписки от почты тоже выглядело полезным, но я подумал, что через 3 года мы могли бы найти лучшее решение

Вот мой полный код -

#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  

Вот файл 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

Код работает нормально для существующих записей, и отписка работает отлично, у меня только проблемы с созданием новых клиентов.

Я использовал @client в методе отмены подписки, так как я использую этот объект в шаблоне client_mailer.rb (используя @client или просто используя клиент, оба работают!)

РЕДАКТИРОВАТЬ 2 - _form.html.erb

 {class: 'form-horizontal'}) do |f| %>

     "Full Name" %>
    
    
    

Я скопировал полный стек дорожек вhttp://jsfiddle.net/icyborg7/dadGS/

Ответы на вопрос(1)

Ваш ответ на вопрос