|
ValidacionesEnSinatra
Estoy haciendo mi trabajo de inserción profesional en el lenguaje Ruby, utilizando las herramientas Active Record y Sinatra. Para poder acordarme del lenguaje y de Sinatra, mi primera tarea fue realizar un ABM. El problema lo tuve cuando quise agregarle validaciones. Al principio le agregue al modelo las validaciones que provee Active Records, esas validaciones te debería validar los campos obligatorios, pero no lo estaba realizando. Después de eso estuve buscando mucho por Internet hacer validaciones con esas 2 herramientas, pero las que encontraba no me andaban. Después de hablar con una amiga del problema que tenia, me dio una solución que hasta el momento no había probado, escribir el error y llamar a la página actual. Su idea fue un éxito, pero la forma que tenia de validar las cosas a "mano", en verdad era muy fea y se volvería muy tedioso si tenia la tabla muchos más datos. Por tal motivo, comencé a leer sobre la interacción de estas herramientas. Pude encontrar que se necesita una gema especial, que es la encargada que interactuen ambas. Esta gema se llama: "sinatra-activerecord". Después de bajar la gema, empece a leer el tutorial de la última versión ActiveRecords. La forma en la que estaba tratando de validar los campos ("validates_presence_of"), era la incorrecta. Mi app ejemplo, fue hacer un ABM de Usuarios (Nombre, Apellido). De esta forma me quedo la definición de la clase: class Usuario < ActiveRecord::Base validates :nombre, :presence => {:message => ' Por favor ingrese el nombre del usuario'} validates :apellido, :presence => {:message => ' Por favor ingrese el apellido del usuario'}end "validates" estaría representando lo mismo que el método "validates_presence_of". Además lo bueno es que se le puede definir los mensajes que tendrá en caso de lanzar el sistema esa validación. Pero con esto solo no funciona, ya que necesita el app un método especial que te dice si es valido lo que uno quiere ingresar. post '/:id/usuarioModificado' do ... if user.valid? ...endelse@message = "" user.errors.messages.each do |e|@message= @message + e "[" 1 "]" "[" 0 "]" + "end @usuario = user erb :usuario_modificacion Cuando hay algun dato no valido, recorro cada uno de los mensajes y los agrego en el erb. Lanzando por último la página actual. Gracias a esto pude tener andando las validaciones para mi primera app en ruby utilizando Sinatra y ActiveRecords; y poder empezar a desarrollar lo que sería mi TIP. |