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.
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
Utilisez <% if user_signed_in?%> ← user_signed_in? Est une méthode fournie par devise, vous n'avez donc pas à la définir.
Accepter l'inscription uniquement pour l'adresse e-mail de la personne
-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
Appelez le dossier de vue fourni par devise avec rails g devise: views
● 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é Ajoutez
controllers: {registrations: 'users / registrations'}après devise_for: users ● Création d'un contrôleur pour afficher la page des détails de l'utilisateur
rails g controller users`
● Définir l'action de spectacle, l'itinéraire, créer un fichier de vue
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.
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.
● 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
● 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