[RUBY] J'ai essayé Rails débutant [Chapitre 2]

Chapitre 2 Enregistrement de l'utilisateur / création de la fonction de connexion


Se préparer à utiliser un appareil (gemme)

Ajoutez gem'devise' au Gemfile et exécutez bundle install dans le terminal Après avoir exécuté rails g devise: install, créez un modèle utilisateur avec rails g devise user Avec cela, le routage est également créé automatiquement.

Installation du lien de déconnexion

Afficher le modèle partiel: ajoutez <% = render'layouts / header '%> dans le corps de la vue de l'application Créer un modèle partiel: créez un fichier _header.html.erb dans le dossier des dispositions de la vue

Changer le lien affiché lors de la connexion et de la déconnexion

Utilisez <% if user_signed_in?%> ← user_signed_in? Est une méthode fournie par devise, vous n'avez donc pas à la définir.


Ajouter une fonction d'authentification de messagerie

Accepter l'inscription uniquement pour l'adresse e-mail de la personne

Fonction d'authentification à l'aide d'un appareil

-Ajout de : confirmable au fichier de modèle utilisateur -Ajout de config.action_mailer.default_url_options = {hôte:" localhost ", port: 3000} à config / environnements / development.rb (= fichier de configuration / environnement / développement)

● Vérifiez l'e-mail envoyé dans l'environnement de développement -Ajout de gem'letter_opener_web dans le groupe: développement de Gemfile et exécution de l'installation du bundle -Ajoutez config.action_mailer.delivery_method =: letter_opener_web vers le bas du fichier de développement que vous avez ajouté précédemment. -Ajouter le code suivant au fichier racine

routes.rb


if Rails.env.development?
 mount LetterOpenerWeb::Engine, at: "/letter_opener"
end
⚠️ Un nouvel enregistrement n'est plus possible après la mise en œuvre de la fonction d'authentification mail
スクリーンショット 2020-06-13 18.43.33.png On m'a dit que confirm_at était introuvable C'est peut-être parce que rails db: migrate a été effectué sans décommenter le fichier de migration lors de la création du modèle utilisateur? J'ai pu résoudre l'erreur en me référant à [ici](https://teratail.com/questions/140788). Déposez (supprimez) la base de données avec `bin / rails db: drop`, configurez et re-migrez
Modifier le contenu du texte de l'e-mail et le texte du nouvel écran d'inscription / de connexion

Appelez le dossier de vue fourni par devise avec rails g devise: views


Créer une page de détails utilisateur

Ajouter une colonne de nom à la table des utilisateurs

● Exécutez rails g migration AddNameToUsers et ajoutez ʻadd_column: users ,: name ,: stringdans la modification par défaut du fichier de migration créé ➡️ migrate ● Réécriture du nouveau formulaire d'inscription ● Définissez des paramètres forts -Créer un fichier de contrôleur pour la nouvelle fonction d'enregistrement des utilisateurs:rails g devise: controllers users app / controllers / users / registrations_controller.rb devient le contrôleur pour la nouvelle inscription. Décommentez la partie sur configure_sign_up_params · Réécrire le fichier de routage pour appliquer le fichier de contrôleur personnalisé Ajoutezcontrollers: {registrations: 'users / registrations'}après devise_for: users ● Création d'un contrôleur pour afficher la page des détails de l'utilisateurrails g controller users` ● Définir l'action de spectacle, l'itinéraire, créer un fichier de vue

⚠️ La colonne de nom est-elle vide même après une nouvelle inscription?

La clé de la partie non commentée du contrôleur nouvellement enregistré n'a pas été définie comme nom.-La cause était une faute d'orthographe dans le fichier racine.


Lier les utilisateurs avec des questions

Faire en sorte que la table de questions ait user_id et colonnes ● Créer un fichier de migration rails g migration AddUserIDToQuestions -Exécuter ʻadd_reference: questions ,: user, Foreign_key: true` ➡️ migrer dans le changement de définition

● Traitement pour saisir une valeur dans user_id -Récrire l'action de création du contrôleur de question current_user est fourni par devise

● Association de modèles (association) -Has_many: questions dans le fichier de modèle utilisateur En ajoutant appartient_to: utilisateur au fichier de modèle de question, vous pouvez associer plusieurs questions à un utilisateur et un utilisateur à une question. ・ Si vous ajoutez depandent: destroy à la suite de has_many ~ dans ↑, lorsque vous supprimez un utilisateur, la question créée sera également supprimée.

● Afficher la liste des titres de la question créée sur la page des détails de l'utilisateur ・ Parce que j'utilise une association, je peux obtenir la question de cet utilisateur sur @ user.questions.


Créer une fonction d'édition / suppression de question

● Routage ・ `Obtenez" / questions /: id / edit ", à:" questions # edit " ・ Patch "/ questions /: id", pour: "questions # update" ⭐️ ・ Supprimer "/ questions /: id", pour: "questions # destroy"

● Définition d'action et création de vue -Depuis qu'il est attribué à @question dans l'action d'édition, le formulaire d'édition peut être créé avec model: @ question spécifié dans la balise form_with.

● Mettre un lien vers la page de modification / suppression sur la page de détails de la question -Spécifier method :: HTTP request method, data: {confirm:" message "} dans la balise de lien de la page supprimée.

● Autoriser uniquement les utilisateurs connectés à modifier / supprimer / poser des questions Utilisez la méthode de devise (ʻauthenticate_user! ) -Le contrôleur de questions a before_action: authenticate_user!, Seulement: [: new ,: create, edit, update ,: destroy]`

● Autoriser uniquement la personne qui a créé la question à modifier / supprimer ・ Sous ↑ before_action: ensure_correct_user, uniquement: [: edit ,: update ,: destroy] -Définir ensure_correct_user sous privé ◎ Différence entre find (params [: id]) et find_by (id: params [: id]) Le traitement lorsque la valeur est introuvable est différent [Référence](https://doruby.jp/users/tn_on_rails/entries/-Rails-find(%3Cid%3E)%E3%81%A8find_by(id--%3Cid) % 3E)% E3% 81% AE% E9% 81% 95% E3% 81% 84) find: obtenir une erreur find_by: renvoie nul

● Afficher les liens de modification / suppression uniquement vers la personne qui a créé la question


Ce que j'ai appris

● le rendu dans la vue affiche un modèle partiel ● La méthode link_to method: spécifie le type de méthode de requête HTTP. S'il n'est pas spécifié, il sera obtenu Afficher une alerte lorsqu'un clic est effectué sur un lien avec data: {confirm:" text "} ● balise ul = balise de liste non ordonnée. Utilisé pour des choses pertinentes et régulières (menus de navigation, diaporamas, etc.) ● Code d'intégration Ruby: <% =%> si vous souhaitez l'afficher, mais vous n'avez pas besoin d'égal si vous n'avez pas besoin de l'afficher ● Si vous souhaitez effectuer une modification après avoir exécuté une fois la migration, vous devez restaurer, puis modifier et exécuter bin / rails db: migrate. ● add_reference crée les colonnes nécessaires pour associer la table. _Id est automatiquement ajouté au nom de la colonne Contrainte de clé externe (Foreign_key: true): quelque chose de plus sûr lors de la création d'une clé externe ● L'association est pratique ● Méthodes de routage: patch (mise à jour partielle des ressources) et suppression ● Routage automatique en masse ressources: nom du contrôleur Exécutez et confirmez les rails routes

Recommended Posts

J'ai essayé Rails débutant [Chapitre 2]
[Rails] J'ai essayé de supprimer l'application
tutoriel rails Chapitre 6
tutoriel rails Chapitre 1
tutoriel rails Chapitre 7
J'ai essayé Spring.
tutoriel rails Chapitre 10
J'ai essayé de mettre Tomcat
tutoriel rails Chapitre 9
J'ai essayé youtubeDataApi.
J'ai essayé de refactoriser ①
tutoriel rails Chapitre 8
J'ai essayé FizzBuzz.
[Débutant] Tutoriel Rails
J'ai essayé JHipster 5.1
J'ai essayé d'organiser la session en Rails
[Notions de base sur Ruby] J'ai essayé d'apprendre des modules (Chapitre 1)
[J'ai essayé] Tutoriel de printemps
Rubis aromatisé aux rails
J'ai essayé d'exécuter Autoware
J'ai essayé d'utiliser Gson
J'ai essayé QUARKUS immédiatement
Tutoriel Rails Chapitre 3 Apprentissage
J'ai essayé d'utiliser TestNG
J'ai essayé Spring Batch
J'ai essayé d'utiliser Galasa
J'ai essayé node-jt400 (Programmes)
J'ai essayé node-jt400 (exécuter)
Tutoriel Rails Chapitre 4 Apprentissage
Tutoriel Rails Chapitre 1 Apprentissage
Tutoriel Rails Chapitre 2 Apprentissage
[Débutant] À propos de la session Rails
J'ai essayé node-jt400 (Transactions)
[Débutant] Je suis tombé sur le lancement d'un projet avec Rails6
Rails6 J'ai essayé d'introduire Docker dans une application existante
J'ai essayé un test unitaire de l'application Rails en utilisant RSpec et FactoryBot
J'ai commencé Java Gold (Chapitre 1-1)
J'ai essayé DI avec Ruby
J'ai essayé node-jt400 (écriture IFS)
[Rails] J'ai essayé d'utiliser la méthode button_to pour la première fois
[Rails] J'ai essayé de créer une mini application avec FullCalendar
J'ai essayé node-jt400 (mise à jour SQL)
J'ai essayé d'utiliser azure cloud-init
J'ai essayé la machine Spring State
J'ai essayé Drools (Java, InputStream)
J'ai essayé le déploiement automatique avec CircleCI + Capistrano + AWS (EC2) + Rails
[Rails] J'ai essayé d'implémenter le traitement par lots avec la tâche Rake