#ruby-on-rails #session #shopping-cart
#ruby-on-rails #сеанс #корзина для покупок
Вопрос:
Я создаю интернет-магазин только для улучшения навыков rails. Я хочу разрешить неавторизованному пользователю добавлять товары в корзину. Для этого я должен каким-то образом сохранить объект корзины и элементы, добавленные к нему в сеансе или где-то еще. Как я могу это сделать?
Ответ №1:
Вы можете просто добавить хэш к сеансу пользователя (который также создается, если он еще не вошел в систему).
session[:cart] = Array.new if !session[:cart]
И затем, когда он добавляет объект в корзину, вы можете добавить хэш в массив в сеансе следующим образом.
session[:cart] << hash.new(:product_id => <id>, :quantity => 1337)
Конечно, вы также могли бы создать модель Cart
и записать cart_id
ее в сеанс следующим образом.
session[:cart_id] = <cart_id>
Но недостаток использования этого метода (который для обычного является лучшим способом выхода) в том, что вы не можете уничтожить запись до тех пор, пока сеанс не будет уничтожен, и поэтому у вас могут возникнуть некоторые проблемы со всеми старыми тележками.