интеграция магии в процесс извлечения

#gem #ruby-on-rails-3.1

#rubygems #ruby-on-rails-3.1

Вопрос:

Я хотел бы интегрировать sorcery-gem для аутентификации при проверке в интернет-магазине. Я следил за эпизодом 283 Railscast Райана Бейта — аутентификация с помощью магии.

Данный пользователь собрал некоторые продукты в своем session[:cart] и теперь хочет оформить заказ. Он нажимает «оформить заказ», и RailsApp проверяет, вошел ли он уже в систему. Если нет, он будет перенаправлен на сеансы #new и должен войти в систему.

Проблема в том, что #login для sorcery выполняет a session_reset и поэтому также session[:cart] будет уничтожен.

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

Приветствую, CS

Ответ №1:

просто сделайте что-то подобное в вашем контроллере сеанса (место, которое вы вызываете login):

 temp_cart = session[:cart]
login(…)
session[:cart] = temp_cart
  

Таким образом, вы передадите свою корзину во время сброса сеанса.

Лучшие, JJS