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"