Ejercicio
- Inicializar el proyecto
- Agregar modelos (Movie, Actor...)
- seed.rb
- Vistas, ABM
- Categorías
- ActiveStorage
Inicializar el proyecto
$ rails new cinema -d postgresql --skip-coffee
agregar /config/database.yml
a .gitignore
configurar y crear la DB
$ rails db:create
Modelos
$ rails g model Movie title rating:float awards:integer \
released_at:date year:integer duration:integer category_id:integer
Agregamos las validaciones:
- en la migración:
t.string :title, null: false
- en el modelo:
validates :title, presence: true
Corremos las migraciones:
$ rails db:migrate
Agregamos datos mediante seed.rb
def create_movie title, year, duration, category_id
Movie.create(
title: title,
year: year,
duration: duration,
category_id: category_id
)
end
Agregamos datos mediante seed.rb
create_movie('Avatar', 2009, 120, 5)
create_movie('Titanic', 1997, 320, 3)
create_movie('La Guerra de las galaxias: Episodio VI', 131, 5)
create_movie('Parque Jurasico', 270, 5)
create_movie('Harry Potter y la piedra filosofal', 152, 11)
create_movie('Harry Potter y la cámara de los secretos', 161, 11)
create_movie('El rey león', 1994, 88, 10)
create_movie('Toy Story', 1995, 81, 7)
create_movie('Inception', 2010, 148, 5)
Category = {
1 => 'Comedia',
2 => 'Terror',
3 => 'Drama',
4 => 'Accion',
5 => 'Ciencia Ficcion',
6 => 'Suspenso',
7 => 'Animacion',
8 => 'Aventuras',
9 => 'Documental',
10 => 'Infantiles',
11 => 'Fantasia',
12 => 'Musical'
}
def Category.to_options
self.map{|k,v| [v,k]}
end
Vistas, ABM
Autenticación
Basic Authentication
class AdminController < ApplicationController
http_basic_authenticate_with name: 'admin', password: 'password', except: :index
def index
render plain: "Esto es público"
end
def edit
render plain: "Esto es privado"
end
end
.env
Gemfile
gem 'dotenv-rails', groups: [:development, :test]
En el código
HOSTNAME = ENV['HOSTNAME']
Credentials
$ rails credentials:edit
# YAML
basic_auth:
user: admin
pass: password
http_basic_authenticate_with(
name: Rails.application.credentials.basic_auth[:user],
password: Rails.application.credentials.basic_auth[:pass]
)
ActiveStorage
$ rails active_storage:install
=> db/migrate/20190807050837_create_active_storage_tables.active_storage.rb