2010-12-28 13 views
6

Estoy intentando añadir uno al campo ya incrementado en el PP, pero yo estoy recibiendo el siguiente error: NoMethodError (undefined method +' por falso: FalseClass): `rieles agregue a incrementar el valor de SQL

Código:

med = Media.find(params[:media_id]) 
med.update_attributes({:screener_viewed => med.screener_viewed + 1}) 

estoy queriendo añadir 1 al valor actual de screener_viewed, pero no puedo conseguir que funcione.

Código de Trabajo:

Media.increment_counter(:screener_viewed, params[:media_id]) 

Respuesta

16

Uso increment!:

med.increment!(:screener_viewed) 

Asegúrese de que screener_viewed es de tipo entero en su base de datos.

+0

¡De hecho acabo de encontrar esto después de refinar mi búsqueda en Google! Todavía soy nuevo en Rails y no tengo idea de dónde ha estado TODA mi vida, ¡pero definitivamente estoy amando cada minuto! ¡Gracias por la ayuda! – dennismonsewicz

+0

Me alegro de esto ayudó. Rails es definitivamente una revelación. Te aconsejo que también aprendas más sobre el rubí en sí. La genialidad de Rails se debe en gran parte a la "forma ruby". – bowsersenior

0

Examine cuidadosamente el mensaje de error. Dice que no hay un método de adición definido para FalseClass, lo que significa que screener_viewed contiene un valor booleano de falso. ¿Esperaste que contuviera un número entero o estás intentando cambiar el valor a verdadero?

0

¿Podría proporcionar la definición de migración para el modelo de Medios? Parece que usted ha definido como un booleano, que no soporta el operador +:

irb(main):002:0> false + 1 
NoMethodError: undefined method `+' for false:FalseClass 
     from (irb):2 
Cuestiones relacionadas