Dúvida em Ruby on Rails.. bug ou lambança minha?  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
bzanchet
Java Ninja

Membro desde: 18/05/2006 20:04:34
Mensagens: 256
Offline

Desculpem, eu sei que não é o fórum mais apropriado, mas como existem aqui vários usuários do Rails, inclusive profissionais, e como estamos na seção "Off-topic", além de não haver nada nas regras proibindo... resolvi tentar (e desde ontem que tento e não consigo me cadastrar no RubyOnBr.. o captcha não aparece).

Observem o seguinte trecho de código.


Funciona perfeitamente. Quando o pagamento não é preenchido, o erro é mostrado e tudo corre normalmente.

Mas deixando a coisa um pouco mais complexa:


Ocorre um comportamento muito estranho: quando o pagamento é deixado em branco numa primeira tentativa, o erro pego e é mostrado corretamente. Porém, numa tentativa seguinte de fazer o salvamento do pedido, acontece um erro numa das foreign keys: o rails tenta inserir um dos objetos relacionados a "pedido" usando 0 na chave estrangeira, ao invés do id do pedido recém salvo. Não faz sentido.

(fora de tags de codigo pra não estourar horizontalmente)
ActiveRecord::StatementInvalid (Mysql::Error: #23000Cannot add or update a child row: a foreign key constraint fails (`locadora_development/locacoes_midia`, CONSTRAINT `copia_pedido` FOREIGN KEY (`pedido_id`) REFERENCES `pedidos` (`id`)): INSERT INTO locacoes_midia (`devolucao_id`, `data_devolucao`, `multa`, `copia_id`, `preco`, `pedido_id`) VALUES(NULL, '2006-09-04T21:31:21-0300', 0.25, 50, 1.5, 0)):


Observem: esse erro ocorre *apenas* quando na primeira tentativa o pagamento é deixado em branco. Se for preenchido corretamente na primeira tentativa, o pedido é salvo corretamente.

Enfim.. eu acho estranho colocar apenas o @pedido.save dentro da transação.. será que tem a ver com isso?

Em segundo lugar: colocar apenas o laço que marca as cópias como indisponíveis dentro da transação e fazer @pedido.destroy caso a transação falhe... é uma solução... mas é uma gambiarra, não?


http://conceitua-se.blogspot.com/
[WWW] [MSN]
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team