Сохранение объекта корзины в течение одного сеанса - PullRequest
0 голосов
/ 02 ноября 2011

Я делаю интернет-магазин только для улучшения навыков рельсов.Я хочу, чтобы неавторизованный пользователь мог добавлять товары в корзину.Для этого я должен каким-то образом хранить объект корзины и элементы, добавленные к нему в сеансе или где-то еще.Как я могу это сделать?

1 Ответ

0 голосов
/ 02 ноября 2011

Вы можете просто добавить хэш в пользовательский сеанс (который также создается, если он еще не вошел в систему).

session[:cart] = Array.new if !session[:cart]

А затем, когда он добавляет объект в корзину, вы можете добавить хеш вмассив в сеансе, как это.

session[:cart] << hash.new(:product_id => <id>, :quantity => 1337)

Конечно, вы также можете создать модель Cart и записать cart_id в сеанс, как это.

session[:cart_id] = <cart_id>

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

...