Problema con ejemplos de libro

Hola a todos,

Este es mi primer mensaje, mi info en la firma :smiley:

Estoy leyendo el libro de Agile Web D. with Rails - A Pragmatic
Guide y me he topado con un error que no entiendo.

En la pagina numero 62 del libro donde se estan haciendo las
vaildaciones de
los campos, se crea un metodo protected llamado validate el cual me
proboca
un error si lo escribo tal y como dice el ejemplo:

protected
def validate
   errors.add(:price, "should be positive") unless price.nil? || price > 
0.0
end

El error:
NameError in AdminController#index

undefined local variable or method `protected’ for #Object:0x284fa38

Si quito el protected la validacion no funciona, igual agrega los datos
si
el precio es 0.

Saludos::…

On Feb 2, 2007, at 11:15 PM, Marconi P. wrote:

Hola a todos,

Este es mi primer mensaje, mi info en la firma :smiley:

Bienvenido a bordo!

errors.add(:price, “should be positive”) unless price.nil? ||
price > 0.0
end

El error:
NameError in AdminController#index undefined local variable or
method `protected’ for #

Si quito el protected la validacion no funciona, igual agrega los
datos si el precio es 0.

Parece que tienes ese codigo dentro del metodo index, ha de quedar a
nivel de clase:

class AdminController < ApplicationController

 def index
   ...
 end

 protected
 def validate
   ...
 end

end

– fxn

On Feb 2, 2007, at 11:26 PM, Xavier N. wrote:

 protected
 def validate
   ...
 end

Argh disculpa, eso va en el modelo claro.

– fxn

No logro captar aun :frowning:

En el modelo de product solo tengo:

class Product < ActiveRecord::Base
validates_presence_of :title, :description, :image_url
validates_numericality_of :price
end

protected
def validate
errors.add(:price, “should be positive”) unless price.nil? || price >
0.0
end

Las validaciones, pero ese protect def validate es el que me da el
error. No
tengo ningun metodo index.

Saludos::…

Tal como te comentaba Xavier pero en otras palabras: ojo con los end’s
de la clase “Product” (el modelo en este caso). El método “validate”
debe definirse dentro de la clase, por eso:

class Product < ActiveRecord::Base
validates_presence_of :title, :description, :image_url
validates_numericality_of :price
#end #<---- Fuera !

protected
def validate
errors.add(:price, “should be positive”) unless price.nil? || price

0.0
end

end #<— End de la clase Product

Procura mantener tu código indentado, estos errores se detectan en
seguida si lo está.

Ahora si!

Muchas gracias!