Rails console - stevendevs/ALPHA-BLOG GitHub Wiki
Comando
rails c
Test de connection to articles table
nombre de la clase y desplegamos la coleccion completa con
Article.all
Crear uno
agregamos sus atributos
Article.create(ttle: "", descroption: "" )
Verificamos su creacion
Article.last
Crear a travez de variable o instancia
article = Article.new
article
Agregar sus atributos
article.title = ""
article.descripcion = ""
article
Los campos están seteados con los valores de title y descripcion
Pasar los valores de la consola a la base de datos
article.save
Article.all
Otra manera de crear con variables
article = Article.new(title: "", description: "")
article.save
Article.all
CRUD en consola (Read, Update, Delete)
rails c
Ver un articulo con id especifico
Article.find(2)
Article.last
Article.first
article = Article.find(2)
article
articles = Article.all
articles
Geter and seter
article.title
article.description
Update
article.description
article.description = "New descripcion"
Article.find(2)
article = Article.new
article.save
Los datos se guardan incluso vacío
Destruir un article especifico
Article.find().destroy
Validaciones en el modelo Article
validates :title, presence: true, length: { minimum: 5, maximum: 100 }
validates :description, presence: true, length: { minimum: 6, maximum: 200 }
end
Validaciones de longitud y presencia
reload!
Crear articulo sin titulo y sin descripcion
article = Article.new
article.save
Ver mensajes de error
article.errors.full_messages
Resolver errores
article.title = ""
article.description = ""
article.save
Crear articulo sin problema
article = Article.new(title: "title", description: "description")
article.save
125. One-to-many associations demo with the rails console
Crear User resorces
rails g scalffold User name:string
Crear User resorces
rails g scalffold User name:string
rails db:migrate
rails c
User.all
Crear usuario
rails c
User.create(name: "Kevin")
User.all
User.save
Asociar Usuarios y articulos
Primero agregar la columna user_id en la tabla articles
rails g migration add_user_id_to_articles
Con ese comando generamos un archivo de migracion con un nombre adecuado, ahora se debe escribir en la migracion que deseamos hacer
class AddUserIdToArticles < ActiveRecord::Migration[8.0]
def change
add_column :articles, :user_id, :int
end
end
rails db:migrate
rails c
Para la perspectiva del usuario ya está todo listo para la asociación agregando codigo en los modelos
En article.rb
belongs_to :user
En user.rb
has_many :articles
Asociar articulos a usuarios
Crear instancia de usuario
User.create(name: "John")
user_2 = User.last
user_2.save
user.2.id
Asociar ese usuario con id 2 a un nuevo articulo
Article.create(title: "My title", description: "Some description", user_id: user_2.id)
user_2.articles
User validation
validates :name,
presence: true, uniqueness: true ,
length: {minimum: 3, maximum: 25}
validates :email,
presence: true,
length: {minimum: 3, maximum: 25}
Rails console
reload!
user_3 = User.new(name: "jo")
user_3.valid?
user_3.errors.full_messages
Validacion de correo
rails c
URI::MailTo::EMAIL_REGEXP
Validaciones
class User < ApplicationRecord
has_many :articles
validates :name,
presence: true, uniqueness: true ,
length: {minimum: 3, maximum: 25}
validates :email,
presence: true,
format: { with: URI::MailTo::EMAIL_REGEXP },
length: {minimum: 3, maximum: 25}
end
Crear instancia de usuario
User.create(name: "John")
user_2 = User.last
user_2.save
user.2.id
Befor_save method
Crear un usuario
rails c
User.create(name: "Kev", email: "[email protected]", password: "123456")
before_save implementation en user.rb
before_save { self.email = email.downcase }```
User.create(name: "Kss", email: "[email protected]", password: "123456" )
User.last.email
Password security
hashing algorithm
descomentar la gema
gem "bcrypt", "~> 3.1.7"
bunde install
Agregar a el modelo usuarios una password segura
has_secure_password
Modificar la tabla
rails g migration add_password_digest_to_users
Agregar
class AddPasswordDigestToUsers < ActiveRecord::Migration[8.0]
def change
add_column :users, :password_digest, :string
end
end
migrar
rails db:migrate
Probar en la consola
rails c
User.all
El resultado es nill en password, como cambiarlo?
Crear un password hasheado
BCrypt::Password.create("password")
resultado
"$2a$12$XdFs49bW/6D8sB16mrt08.V8.c1Lpc77QNtBxFwCYrpbujDnkEGJq"
Correr el comando nuevamente
BCrypt::Password.create("password")
resultado
"$2a$12$qOabHJNRXGwFk0Vaam.XQeeZhQgzfeYdAYA8PLdP6PYR4sy3JSdoq"