Incrementar 1 campo BBDD

Hola a todos,

Me gustaría incrementar en uno un campo de la base de datos, cuando ya
este repetido.

Por ejemplo si tengo “Enero 2008” y me vuelven a guardar esa fecha que
el campo repeat valga dos.

Yo hago esto:

@month = Date.today
@month2 = @month.strftime(’%B’)
@year = Date.today
@year2 = @year.strftime(’%y’)
@month_year = @month2 + ’ ’ + @year2
@date_blogs = @profile.date_blogs

for date_blog in @date_blogs
if date_blog.monthyear == @month_year
date_blog.repeat += 1
else
nou = DateBlog.new
nou.monthyear = @month_year
nou.repeat = 1
@profile.date_blogs << nou
end
end

El problema que tengo es que cuando se repite el valor me lo guarda en
lineas diferentes, y como he comentado antes quiero que el campo de la
tabla repeat le sume 1.

Gracias a todos!

He encontrado el error, i es que al hacer un for siempre me hacia el
else.

Ahora he solucionado ese problema, pero ahora cuando se repite el campo
repeat no me augmenta… ¿como se augmenta en ruby?

Gracias

Gracias por lo del nombre, la verdad q hay muxa gente q me lo dice :wink:

Lo siento Javi pero no funciona, yo creo q debe ser algo muy sencillo…
pero me he rallao muxo con este tema i no encuentro la solucion, a ver
si algien sabe q debe ser.

David D. wrote:

He encontrado el error, i es que al hacer un for siempre me hacia el
else.

Ahora he solucionado ese problema, pero ahora cuando se repite el campo
repeat no me augmenta… ¿como se augmenta en ruby?

Gracias

David D. es un nombre que mola. es uno de esos nombres que los ves y
dices… que grande!!

si quieres incrementar ese campo quedaria asi:

@month = Date.today
@month2 = @month.strftime(’%B’)
@year = Date.today
@year2 = @year.strftime(’%y’)
@month_year = @month2 + ’ ’ + @year2
@date_blogs = @profile.date_blogs

for date_blog in @date_blogs
if date_blog.monthyear == @month_year
date_blog.repeat + 1
else
nou = DateBlog.new
nou.monthyear = @month_year
nou.repeat = 1
@profile.date_blogs << nou
end
end

saludos!

hola,

Lo siento Javi pero no funciona, yo creo q debe ser algo muy sencillo…
pero me he rallao muxo con este tema i no encuentro la solucion, a ver
si algien sabe q debe ser.

tiene pinta de que incrementas bien la variable, pero luego eso hay
que guardarlo en la base de datos. Prueba con un date_blog.save

si miras la doc de active record hay un método que directamente te
incrementa un campo de la db en un paso (sin tener que sumar 1 a la
variable y luego guardar). Puede que se llame “increment!”… y la verdad
es que con un nombre así tampoco debería ser muy difícil encontrarlo en
la
documentación.
suerte,

javier ramírez

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs