Como poner codigo de Ruby en RoR Hola , gente. Estoy intentado aprender ROR, ya estudié Ruby.
Tengo un condigo en Ruby que valida un campo (CUIT , en mi pais es un
Código de Identificación Tributario) , luego hice una aplicación en ROR,
algo muy basico con un Controlador Clientes, que da de alta un registro
en la tabla clientes en el MySQL.
Con RoR hago validaciones del tipo , que el campo no esté vacio, o que no sea menor a 10, etc. para los distintos campos. Esto hasta aqui anda bien.
Mi consulta puntual, es como haría para incorporar el código que valida
el CUIT en este esquema de RoR? Busque en internet pero no encuentro nada al respecto.
No se donde "embeber" o "insertar" mi código cuir.rb en mi aplicación ROR, como para que por ejemplo aparte de validar que no sea de un tamaño de 10, luego
el código cuit.rb, valide si el cuit ingresado es válido.
Vuelvo a aclarar que estoy aprendiendo, gracias desde ya por su tiempo.
Adjunto los pasos que he seguido para la creación de mi proyecto, bajo Windows 7 y Rails 3. Espero que sea de utilidad para alguien.
Gracias de antemano.
Creando una aplicacion:
Creo una aplicacion llamada gestion, que funcionara con MySQL, si no por defecto crearia unapara que funcione con SQLite.
->rails new /Ruby193/app/gestion -d mysql
Esto crea un archivo que tenemos que editar, se llama gestion/config/database.yml que es el que permite interactuar con MySQL y esta dentro de gestion/config
# example/config/database.yml
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: gestion
pool: 5
username:root
password: "xxxx"
host: localhost
Poner el pass entre comillas! , el Password. Me cambio al directorio cd gestion cd gestion.
Creo una base de datos para la aplicacion, esta estara vacia.
->rake db:create
Si miramos en este punto en el SQL , veremos que aparece una Nueva base de datos, pero no tiene tablas.
Levantamos el servidor web :
->rails server
con Ctrl+C paramos el serviror Web. No cerrar la centana de DOS por que se detiene en servicio y abro navegdor en : http://localhost:3000/ se vera la pagiana de getting Started.
Generamos un Controlador y Vista como para empezar a poner algo dentro de la aplicacion
->rails generate controller acercade index
Podemos abrir gestion/app/views/acercade/index.html.erb
y escribimos: <h1>Sistema de Gestion Azul!</h1>
Veremos que ahora aparece en http://127.0.0.1:3000/acercade/index el cartel de Sistema de Gestion Azul.
Para que desaparezca la pagina de Getting Started, borramos getion/public/index.html
Con rails generate creamos una estura para una tabla de la base de datos.
->rails generate scaffold clientes razonsocial:string cuit:string direccion:string telefono:string fecha:date observaciones:text
Creo en la base de datos gestion,una tabla cliente con los campos indicados arriba Para crear la tabla de clientes con los campos.
->rake db:migrate
Si abro localhost:3000/clientes, ya podría ver que aparece el formulario de ABM
Rails incluye algunos metodos para validar campos, el gestion/app/models/clientes.rb se puede editar de manera que quede:
class Cliente < ActiveRecord::Base
validates_presence_of :razonsocial, :cuit , :message => "Este Campo es Obligatorio"
validates_length_of :cuit, :is=> 10, :message => "Longitud 10! sin guiones o espacios en blanco"
end
Lo que me faltaría ahora es ver como incorporar un código que valida el cuit, está escrito en ruby, y debería interactuar con el campo cluit de la tabla clientes
Adjunto el código de cuit.rb que no lo hice yo lo encontré en internet.
cuit.rb
def suma_producto(d, m)
d.inject(0){|s, x| s + x.to_i * m.shift}
end
def valido?(cuit)
cuit = cuit.clone.gsub(/\D/, "")
return false unless cuit.size == 11 && %w{20 23 24 27 30
33}.include?(cuit[0,2])
suma_producto(cuit.split(//), [5,4,3,2,7,6,5,4,3,2,1]) % 11 == 0
end |