[RUBY] J'ai essayé de résumer le projet qui était difficile à première vue

introduction

La rencontre avec la devise était la pire. Même le concept de Gem est ambigu en premier lieu, et je me souviens de l'avoir installé quand j'ai pu comprendre un peu le flux du modèle MVC. En principe, je ne touche pas au contrôleur, donc à première vue, je ne pouvais pas comprendre pourquoi l'action était exécutée sans autorisation. Alors, j'ai décidé de mettre en place quelque chose comme "C'est tout!"

Qu'est-ce que la conception

concevoir est un joyau spécialisé dans les fonctions de gestion des utilisateurs. Les paramètres tels que la connexion et la déconnexion sont faciles. En d'autres termes, vous n'avez pas à définir manuellement le routage, le contrôle, etc. Si l'application peut être enregistrée en tant qu'utilisateur et recevoir le service, son introduction présente l'avantage d'accélérer le développement.

Flux global

  1. Ajouter à Gemfile
  2. Installez l'appareil
  3. Créez un modèle
  4. Créez un tableau
  5. Paramètre de lien pour la nouvelle inscription et la connexion
  6. Créez un fichier de vue pour un nouvel enregistrement

Cette fois, nous ne traiterons que les nouvelles inscriptions.

1. Ajouter à Gemfile

Gemfile


gem 'devise'

・ La dernière ligne du fichier est OK

2. Installez l'appareil

Il y a deux choses à faire ici.

① Assurez-vous que le répertoire actuel est le répertoire de l'application que vous souhaitez installer. Au terminal

bundle install

Assurez-vous de le faire après l'avoir ajouté au Gemfile. Redémarrez le serveur local si nécessaire. (Contrôle + c → rails s)

② Aussi au terminal

rails g devise:install

Cette commande est importante. N'oubliez pas! Cette commande vous permet d'utiliser devise.

3. Créez un modèle

Comme on suppose que la fonction de gestion des utilisateurs sera mise en œuvre cette fois, le nom du modèle sera "utilisateur". Aussi au terminal

rails g devise:model user


Points difficiles
Si vous étudiez les bobines pour la première fois, les commandes de création d'un modèle sont

rails g model user

Apprendre. En comparant les différences, c'est la présence ou l'absence de devise. Les résultats diffèrent grandement selon la présence ou l'absence de cela.

Si la commande n'a pas de modèle ci-dessous, il s'agit simplement de créer un modèle. En d'autres termes, le dispositif ne peut être utilisé. En paramétrant devise: model, même le routage lié au dispositif est généré en même temps avec cette seule commande. Cela vous évite d'avoir à créer un itinéraire. Étonnamment, c'est à la fois un point difficile à apprendre et une bonne chose à propos de la conception. (Le modèle créé se trouve dans le répertoire "app / models")

4. Créer une table

Ajoutez des colonnes au fichier de migration si nécessaire. Cette fois, il est omis. À propos, la devise inclut les colonnes email et mot de passe par défaut. C'est aussi un point de conception compétent. Au terminal.

rails db:migrate

Ici, dvise n'est pas attaché. L'idée est que les fichiers de migration ne se limitent pas aux fichiers créés avec un appareil, mais il y en a d'autres.

5. Lier les paramètres pour la nouvelle inscription et la connexion

On suppose que le lien vers la vue est spécifié par la méthode d'assistance link_to. Au terminal

rails routes

Ensuite, le routage est aligné dans une rangée. (La vue des itinéraires ferroviaires est omise) Ce qu'il faut noter sign_up (nouvelle inscription) sign_in (connexion) C'est une chose différente. Nouvelle inscription = inscription Login = session Est inclus dans le chemin.

Plus précisément, le lien est décrit dans le fichier de vue comme suit.

<%= link_to 's'inscrire', new_user_registration_path %>
<%= link_to 'S'identifier', new_user_session_path %>

Quoi qu'il en soit, faites attention à la différence de chemin.

6. Créez un fichier de vue pour un nouvel enregistrement

Tout d'abord, à partir de la commande pour générer un fichier de vue. Encore une fois, au terminal

rails g devise:views

C'est aussi un point difficile. Il y a trois choses importantes.

Le premier est Comme pour la génération de modèle précédente, ajoutez "concevoir". Le fichier de vue généré par l'ajout de devise sera en cours de conception. En particulier, app/views/devise/registrations/new.html.erb app/views/devise/sessions/new.html.erb

Le second est Il est divisé en un répertoire des inscriptions pour la nouvelle inscription et un répertoire des sessions pour la connexion. En d'autres termes, le fichier qui édite le HTML du nouvel écran d'enregistrement et le fichier qui édite le HTML de l'écran de connexion sont différents.

Le troisième est Le dernier mot de la commande est au pluriel comme view s </ font>. Comme mentionné dans la deuxième section, un certain nombre de fichiers de vue sont générés, vous pouvez donc vous en souvenir au pluriel.   En passant, le code est écrit à la fois dans le fichier HTML nouvellement enregistré et dans le fichier HTMl de connexion par défaut. Modifiez au besoin. (Si vous avez ajouté des colonnes ou si vous êtes détaillé sur la conception)

point

  • [x] devise est ajouté dans le terminal lors de la génération d'un modèle ou d'un fichier de vue.
  • [x] La nouvelle inscription et la nouvelle connexion sont différentes.
  • [x] Presque aucun routage ou description de contrôleur n'est requis, ce qui facilite le développement.

finalement

Le texte est devenu long et difficile à lire. Il ne fait aucun doute que vous vous sentirez une gemme pratique une fois que vous vous y serez habitué!

Recommended Posts

J'ai essayé de résumer le projet qui était difficile à première vue
J'ai essayé de résumer à nouveau le projet qui était difficile à première vue
J'ai essayé de résumer le support d'iOS 14
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
J'ai essayé de résumer les méthodes utilisées
J'ai essayé de résumer les expressions Java lambda
J'ai essayé de résumer l'API Stream
Qu'est-ce que Docker? J'ai essayé de résumer
J'ai essayé de résumer sur JVM / garbage collection
J'ai essayé de résumer divers link_to utilisés cette fois
J'ai essayé de résumer les bases de kotlin et java
J'étais accro à la configuration de default_url_options avec l'introduction de la conception de Rails
J'ai brièvement résumé la grammaire de base de Ruby
J'ai essayé de résumer les applications et les outils de développement personnellement utiles (outils de développement)
J'ai essayé de résumer les applications et les outils de développement personnellement utiles (Apps)
J'ai essayé de résumer l'orientation de l'objet à ma manière.
J'ai essayé de vérifier yum-cron
[Circle CI] Une histoire à laquelle j'étais accro chez Start Building
[Rubiy] J'ai essayé de résumer le traitement de la boucle ce soir [fois, pause ...]
Conférence spéciale sur la simulation multi-échelles: j'ai essayé de résumer le 5e
Conférence spéciale sur la simulation multi-échelles: j'ai essayé de résumer le 8
J'ai essayé de résumer les méthodes de Java String et StringBuilder
J'ai essayé de faire un Numeron qui n'est pas bon avec Ruby
Conférence spéciale sur la simulation multi-échelles: j'ai essayé de résumer le 7
J'étais accro au démarrage de sbt
J'ai essayé de mâcher C # (indexeur)
J'ai essayé d'interagir avec Java
C # (polymorphisme: polymorphisme)
J'ai essayé d'expliquer Active Hash
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
[Introduction à Java] J'ai essayé de résumer les connaissances que j'estime essentielles
[Après avoir appris Progate] j'ai essayé de résumer form_with en comparant avec form_tag
[Ruby] J'ai essayé de résumer les méthodes fréquentes dans paiza
[Ruby] J'ai essayé de résumer les méthodes fréquentes avec paiza ②