Я бы имел логическое поле в таблице пользователей, которое называется что-то вроде subscribed
.Таким образом, вы можете просто выбрать всех пользователей, которые подписаны на электронную почту.
User.where(:subscribed => true)
Затем вы можете настроить действие unsubscribe
в контроллере, который переворачивает логическое значение.
def unsubscribe
User.find(params[:id]).update_attributes(:subscribed => false)
end
Все, что вам нужно сделать, - это передать ссылку на это действие в шаблоне электронной почты и передать идентификатор пользователя вместе с ним.Маршрут можно настроить так, чтобы URL выглядел как www.example.com/users/<id>/unsubscribe
.