(Resolvido) Rollback em session após processamento
5 respostas
rplaurindo
Pessoal, estou implementando um sistema de carrinho e estou tendo problema para guardar o id do produto em session[:cart], meu controller está assim:
class CartController < ApplicationController
def add_product
(session[:cart] ||= []) << params[:id]
p session[:cart]
end
end
O que é definido em params[:id] é via ajax, não sei se isso influência para o Rails. Questão de segurança… Quando peço para imprimir, ele imprime somente o que chegou por último, isto é, ele está fazendo um callback em session[:cart] após o processamento, redefinindo-o sempre para o seu estado anterior, no caso, com ‘nil’.
Nao acha que seria mais interessante, transformar em filter o cart?
A sessao nao esta dando timeout?
rplaurindo
Perdão, mas não entendi o que quis dizer.
Acho que não, pois não mexi nas configurações defult do Rails. Além disso, eu tenho um sistema de login que funciona normalmente. Essa parada acontece somente quando arrasto um “produto” para o “carrinho”, e é quando devo guardar o id do produto em um array, e esse, por sua vez, na key “:cart” do hash “session”.
Esqueci de mencionar que não estou implementando um aplicativo, mas estou ainda trabalhando em um desafio, isto é, estudando. Por isso, não estou guardando dados da sessão no banco de dados. O desafio me foi proposto assim.
rplaurindo
Meu amigo, resolvido. O Rails, como usa o padrão MVC, esperava que uma view fosse renderizada ao final do processamento do método do controller. Como nada era retornado, um erro 500 ocorria, fazendo o Rails executar um rollback em session[:cart]. O método agora ficou assim: