Vamos a tomar nuestra aplicaci贸n de notas para mostrar como crear y asociar nuestro modelo User, pero este ejemplo tambi茅n es valido para otras aplicaciones.
Para esto utilizaremos una gema de ruby llamada devise, entonces primero vamos a nuestro Gemfile y聽 podemos a帽adirla en la ultima linea escribiendo
gem 'devise'
Luego vamos a nuestra linea de comandos y ejecutamos聽
bundler install
rails generate devise:install
rails generate devise User
rails generate devise:views users
rails db:migrate #Crear la tabla users
Listo, despu茅s de esto ya hemos instalado devise, generado nuestro modelo user, sus rutas y sus vistas, en el archivo routes.rb puedes ver que se ha agregado devise_for :users, esto repesenta el conjunto de rutas que devise ha creado por nosotros, puedes ver esto a mas detalle en la documentaci贸n de la gema. Ahora vamos a empezar a utilizar varias rutas y metodos que devise ya tiene desarrollados para nosotros.
En la vista users/registrations/new.html.erb podemos ver el formalario para registro y en users/sessions/new.html.erb podemos ver el formulario de login, por supuesto nosotros podemos agregar estilos y modificar este archivo, pero para este caso vamos a trabajar con la configuracion predeterminada, asi que ya estamos listos para registrar nuestro primer usuario y iniciar sesi贸n, pero antes de esto vamos a a帽adir nuestras rutas de inicio y registro en nuestra navegaci贸n.
<% if user_signed_in? %>
<li class="col-md col-sm">
<%= link_to "Cerrar sesion", destroy_user_session_path, method: :delete %>
</li>
<% else %>
<li class="col-md col-sm">
<%= link_to "Iniciar sesion", new_user_session_path, method: :get %>
</li>
<li class="col-md col-sm">
<%= link_to "Crear cuenta", new_user_registration_path, method: :get %>
</li>
<% end %>
Es importante que realizemos un par de cambios antes de continuar, vamos a modificar nuestro modelo de notas y usuarios para crear la relaci贸n entre ellos. Primero vamos a crear una migraci贸n en la cual vamos a modificar la tabla de notas y luego vamos a agregar la relaci贸n en cada uno de los modelos.
Ejecutamos en consola
rails g migration AddUserToNotes
Vamos a db/migrate donde se encuentran nuestras migraciones y el ultimo archivo a帽adido debe ser la migraci贸n que acabamos de crear, dentro el metodo change agregamos
add_reference :notes, :user, foreign_key: true
change_column_null :notes, :user_id, false
Volvemos a la consola y corremos nuestra migraci贸n
rails db:migrate
Ahora dentro de nuestro modelo notes.rb agregamos la relaci贸n con users
belongs_to :user #Una nota esta relacionada solo con un usuario
Igualmente dentro de users.rb
has_many :notes #Un usuario tiene muchas notas
Ahora ya puedes reiniciar tu servidor y crear tu primer usuario mediante la consola de rails o los formularios de tu aplicaci贸n creados mediante devise.
Con devise tambi茅n podremos acceder a varios callbacks y helpers que nos ayudaran a verificar si el usuario esta logeado, obtener el usuario actual, entre otros.
Continua en:
https://soyremoto.com/p/923301436313