2011-01-04 6 views
0

Je suis plutôt nouveau sur les rails. J'ai un contrôleur qui est d'essayer de mettre à jour un modèle en utilisant le code suivant:ne peut pas mettre à jour les rails modèle

@test = Product.find(1) 
@test.increment!(:price) 

Il ne récupère avec succès le produit de la base de données, mais ne met pas à jour l'attribut de prix. Est-ce que quelqu'un sait pourquoi cela pourrait être le cas, ou comment je pourrais obtenir plus de commentaires sur ce que le problème est?

Merci beaucoup!
Tristan

modifier: le prix est un nombre entier avec la valeur 0. Je reçois le même problème quand je mets le prix avec @ test.price = 50 puis @ test.save.

+0

avez-vous des callbacks sur le produit ? – Fred

Répondre

1

Ah, je trouve le problème que j'utilisais la pierre paperclip (image en pièce jointe), qui avait une validation bloquant toutes les mises à jour Ce bébé l'a résolu: Smarter paperclip validations

0

increment contourne les validations du modèle, il est donc possible que l'incrémentation du "prix" par 1 invalide le modèle, l'empêchant ainsi d'être sauvegardé. Il est difficile de dire sans plus de contexte sur le modèle et son attribut de prix. Vous pouvez essayer la version non-bang de increment, appelez l'enregistrer manuellement, puis inspectez l'objet modèle pour voir s'il y a eu des erreurs de validation.

+0

Salut .J'ai aussi essayé les paramètres de prix d'une autre manière, puis en appelant save.J'ai essayé de vérifier l'objet pour des erreurs, en utilisant le code J'ai depuis perdu, et ne pouvais pas voir. Incrémentez et enregistrez les deux retours faux pour moi, mais quand j'essaie ces méthodes en utilisant la console rails, ils retournent vrai. – WoodenKitty

0

Quel est le type db de l'attribut « prix?

Increment ne fonctionne que sur le nombre attributs basés (http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-increment ...% 21)

+0

le prix est un nombre entier – WoodenKitty

Questions connexes