2010-02-15 6 views
0

J'essaie de mettre à jour un enregistrement. Suis en utilisant le code suivant.Comment avoir une condition dans la mise à jour ActiveRecord

Proddiscount.update({:prodid => params[:id]}, {:discount=>params[:discount]}) 

Interrogation Im essayant d'avoir est:

update proddiscount set discount = '' where prodid = '' 
+1

Vous prodid votre clé primaire? Ou y a-t-il beaucoup de proddiscounts avec 'prodid = some_id'? – klew

Répondre

-1

Que diriez-vous faire:

@prod = Proddiscount.find(:first, :conditions => {prodid => params[:id]}) 
@prod.update_attributes({:discount=>params[:discount]}) 
+0

Cela dépend un peu de ce que "prodid" est exactement, comme demandé @klew – marcgg

0

Si Prodif n'est pas une clé primaire, utilisez update_all (lire la suite here)

Proddiscount.update_all("discount = #{params[:discount]}", ["prodid = ?", params[:prodid]) 

Mais cela ne déclenchera pas de validations.

Questions connexes