Está en la página 1de 9

TALLER 7 : ACTIVE RECORD I en RAILS

Para iniciar el estudio del Active Record de Rails vamos a instalar un complemento en Chrome
denominado sqlite mananger, buscarlo por internet e instalarlo.

Crear complemente de sqlite manager


Hasta ahora se ha trabajado con dos actores uno los controladores que heredan la clase
ActionController y el otro actor son las vistas que lo hacen por medio de la clase ActionView,
en estar tercera pare para completar nuestro MVC introducimos los Modelos que heredan la
clase ActiveRecord

Su función principal es la de hacer de intermediario entre la aplicación y la base de datos.


Recordar que cada base de datos se compone de tablas, cada tabla de registros y cada registro
de campos. ActiveRecord opera con el modelo denominado Mapa de objetos relacionales –
OMR. Rails determina la vinculación así, si tenemos una base de datos llamada Usuarios, debe
existir un modelo llamado usuario. Es importante saber que la tabla ha de estar en prural y el
modelo en singular.

Nombre de la clase nombre de la tabla

UsuarioAnonimo usuario_anonimos

Amigo amigos

Perfil perfiles

Un registro es semejante a un objeto, por ejemplo si en el controlador tenemos

def index

@usuario=Usuario.find(1)

End

Estamos llamando a la tabla usuario y pedimos que nos localice el usuario con el campo id
igual a 1, y a su vez se lo asignamos a una variable de instancia.

Un campo es una propiedad del objeto, los nombres de los campos que usamos aparecen en
minúsculas y en singular, y cuando es compuesto se separa con barra baja, ejemplo

Vista index.html.erb

<p>Nombre:<%= @usuario.nombre %></p>


<p>Apellidos:<%= @usuario.apellidos %></p>
Otro aspecto importante es el uso de la clave primario y foránea, cuando creamos una tabla
desde línea de comandos no tendremos que especificar ninguna clave primaria ya que esto se
hace automático en el campo llamado id donde se almacena un numero autoincrementado, la
indicación en una tabla de que existe una clave foránea se indicara de la siguiente forma

Nombre_tabla_foranea_id=>categoría_id

Los tipos de bases de datos que se pueden manejar son: Mysql, Orcle, PostgreSql, Sqlite3,
Fronbase, Ibm_db, Jdbcmysql, SQL server, Jdbcsqlite3, Jdbcpostgresql y Jdbc

Para especificarla en nuestro proyecto sino usamos RubyMine

$ rails new (nombre_aplicacion) –d (tipo_base_de_datos)

SI usamos RubyMine, cuando se cree el proyecto hay que indicarle la base de datos que vamos
a utilizar.

En nuestra estructura de directorio en la carpeta config existe un archivo denominado


database.yml con diferentes parámetros de configuración de la bbdd.

Algunos ejemplos de conexión, para esto se debe contar con la instalación de cada base de
datos de origen.

Ejemplo MYSQL :
$ rails new usuarios - d mysql

$ gem install mysql2


Algunas opciones disponibles de conexión en ambiente Windows

:host : Nombre del host, por defecto será localhost

:port: puerto de conexión, por defecto 3306

:socket: por defecto será /tmp/mysql.sock

:password: Contraseña, por defecto será sin contraseña


:username Nombre usuario por defecto será root

:database Nombre de la base de datos

:encoding Codificacion , es un valor opcional

:pool Numero de concexiones abiertas a nuestra base de datos por defecto es 5

:reconnect Reconexion automática cuando comprueba que hemos perdido la conexión por
defecto es false

Cuando se usa SSL conexión en forma segura:

:sslca Ruta donde se encuentra el fichero del certificado

:sslkey: Ruta para el fichero SLL key

:sslcert: Ruta para el archivo del certificado

:sslcapath Ruta directorio que contiene truested SLL certificado

:sslcipher Lista de los ciphers permitidos para el cifrado SLL

Ejemplo con POSTGRESQL


$ gem “pg”

$ bundle install

Ejemplo con Oracle


Se debe buscar la gema Ruby/OCI8

$ gem install ruby-oci8 -v 1.0.4

$ gem install activerecord-oracle-adapter --source http://gems.rubyonrails.org

Ejemplo con FRONTBASE


$ gem “ruby-frontbase”

$ bundle install

Ejemplo con IBM DB


Buscar la gema ibm_db, al igual que la gema Ruby/OCI8
APLICACIONES

Una vez creada la aplicación con la base de datos, que puede ser el mismo ejemplo usado en el
taller 2 creado con la gema scaffold

Utilizando $ rails g scaffold Usuario nombre:string apellidos:string edad:integer

Donde Usuario será nuestra tabla, y los campos nombre, apellidos y edad

Tabla : Indicaremos el nombre del modelo en singular, y creara una tabla dentro de nuestra
base de datos con el mismo nombre pero en plural, con permiso antes de las migraciones

Campo : Especificamos los campos los cuales tendrá nuestra tabla

Tipos soportados de datos:

:string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean,
:references

Revisamos el archivo database.yml para identificar que contiene

Migramos la base de datos

$ rake db:migrate

Revisamos que contiene el archivo :

Schema.rb

Refrescamos localhost
$ rake routes

Nos mostrara todas las rutas y seleccionamos en el navegador localhost:3000/usuarios/ y


adicionamos un registro

Revisamos en el navegador con el componente agregado de sqlite que ya hemos adicionado


un registro.

Rake db:MIGRATE

Agregamos al modelo
$ self.table_name = "usuarios"
Para visualizar nuestra tabla:

$ rake db:migrate

Algunas operaciones que se pueden hacer en una tabla:

Agregar columnas en una tabla

add_column : usuarios, :admin, :boolean, :default =>0

Añadir un nuevo índice en la tabla

add_column :usuarios, :nombre

Se puede también eliminar tabla mediante

drop_table :usuarios

Eliminar columnas

remove_column :usuarios, :nombre, :apellidos

Quitar un índice

remove_index :usuarios, :name => :id

Renombrar columna

rename_column (:usuario, :nombre, :usuario)

Como funciona digitando en el terminal por ejemplo añadir columna

rails g migration AddPaisToUsuario país:string


$ rake db:migrate y actualizamos en el Chrome

Para borrar una columna realizamos el mismo proceso así

$ rails g migration RmovePaisFromUsuario pais : string

Si se quiere llamar una versión

$ rake db:migrate VERSION = 20200518113414(este número depende de su equipo)

O resetear la base de datos

$ rake db:reset

También podría gustarte