[RUBY] Manipuler le dispositif avec des rails

Tout d'abord, je voudrais passer en revue le flux d'introduction de l'appareil (ce que j'ai fait) et laissez-moi m'en souvenir ici. Puisque je suis débutant, veuillez me contacter à chaque fois si vous me dites quelque chose qui ne va pas.

À propos de la devise

Tout d'abord, un aperçu de l'appareil, c'est un joyau pour la mise en œuvre de la fonctionnalité de gestion des utilisateurs. Vous pouvez facilement implémenter une nouvelle inscription et une connexion / déconnexion.

Présentation de la devise

Éditons le Gemfile

gem 'devise'(Ajoutons à la dernière ligne)

Vous pouvez désormais travailler avec votre appareil localement, en test et en production.

Redémarrez le serveur local

Après avoir installé Gem, redémarrez une fois le serveur local exécuté dans le terminal. Le moment de refléter le Gem installé est dû au démarrage du serveur.

Créer un fichier de configuration de périphérique

Pour pouvoir utiliser devise, en plus d'installer Gem, il est nécessaire de créer un fichier de paramétrage avec une commande dédiée à concevoir. Créons un fichier avec cette commande

% rails g devise:install

Succès lorsque le journal suivant s'écoule!

      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml
===============================================================================

Depending on your application's configuration some manual setup may be required:

  1. Ensure you have defined default url options in your environments files. Here
     is an example of default_url_options appropriate for a development environment
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

     In production, :host should be set to the actual host of your application.

     * Required for all applications. *

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"
     
     * Not required for API-only Applications *

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

     * Not required for API-only Applications *

  4. You can copy Devise views (for customization) to your app by running:

       rails g devise:views
       
     * Not required *

===============================================================================

Créer un modèle utilisateur sur l'appareil

Lors de l'utilisation de devise, il est nécessaire de créer un nouveau modèle d'utilisateur pour créer un compte. Pour le créer, créez un modèle utilisateur avec la commande de création de modèle de devise au lieu de la méthode de création de modèle habituelle. La commande suivante peut générer le modèle, le fichier de migration qui l'accompagne et les paramètres de routage en même temps. Les chemins liés à l'appareil sont ajoutés à routes.rb.

 rails g devise user

Succès dans le journal suivant

  invoke  active_record
      create    db/migrate/20200309082300_devise_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      insert    app/models/user.rb
       route  devise_for :users

De plus, les routes suivantes sont automatiquement ajoutées à routes.rb.

Rails.application.routes.draw do
  devise_for :users
  root to: 'tweets#index'
  resources :tweets
end

devise_for est une méthode de conception qui génère simultanément plusieurs routes requises pour les fonctions utilisateur.

Créer une table

Étant donné que le fichier de migration a également été généré par la commande précédente, migrez-le.

rails db:migrate

Le tableau a été créé ici.

** Puisque les informations de la table ont été modifiées (migrées), redémarrons le serveur local lors de son démarrage. ** **

Création d'un fichier de vue pour l'appareil

Lorsque vous implémentez la fonction de connexion dans l'appareil, l'écran de connexion / inscription est automatiquement généré, mais il n'est pas généré en tant que fichier de vue. Ceci est dû au fait que nous chargeons un fichier de vue qui existe dans le périphérique Gem.

Afin d'apporter des modifications au fichier de vue de devise, vous devez utiliser la commande de devise pour générer le fichier de vue.

Exécutez la commande pour créer une vue pour l'appareil

% rails g devise:views

Modifiez la vue de l'écran de connexion et le fichier de vue du nouvel écran d'enregistrement créé ici pour créer l'apparence.

Ceci termine l'installation de base de l'appareil. Je suis conscient que si c'est simple, ça va ici, Également utilisé dans la devise

rails g devise:contoroller users

Il y a. Je voudrais résumer comment l'utiliser dans un autre article ci-dessous. (Parce que je ne comprends pas les normes requises)

Installation de paramètres forts

Les informations que vous saisissez lors de votre inscription sont envoyées au serveur en tant que paramètre. Pour les demandes régulières sans dispositif, nous avons écrit des paramètres forts dans le contrôleur pour limiter les paramètres que nous pourrions recevoir.

Pour la conception, écrivez également des paramètres forts dans le contrôleur. Cependant, le contrôleur qui gère l'appareil est décrit dans la Gemme et ne peut pas être modifié. De plus, si vous implémentez la fonction de connexion avec devise, en plus des paramètres, vous recevrez également des paramètres différents des paramètres.

À partir de ce qui précède, nous avons besoin d'une méthode pour refléter les paramètres forts sur le contrôleur du dispositif et d'une méthode pour acquérir des paramètres spécifiques au dispositif.

méthode devise_parameter_sanitizer

Une méthode comme les paramètres dans la conception. Vous pouvez obtenir des paramètres à partir de demandes telles que «connexion» et «nouvel enregistrement» liées au modèle utilisateur de l'appareil.

En combinant cette méthode avec la méthode permit, vous pouvez également spécifier et inclure des colonnes nouvellement ajoutées pour les paramètres forts définis dans devise.

La méthode devise_parameter_sanitizer est utilisée dans la méthode privée nouvellement définie, comme les paramètres forts précédents. Puisque le fournisseur de devise introduit le nom de méthode nouvellement défini comme configure_permitted_parameters, il est habituel de le définir avec ce nom de méthode.

private
def configure_permitted_parameters  #Le nom de la méthode est habituel
  #Autoriser les paramètres pour le modèle utilisateur de l'appareil
  devise_parameter_sanitizer.permit(:définir le nom du processus, keys: [:Clés à autoriser])
end

Le permis de périphérique ajoute les paramètres autorisés en spécifiant la clé dans le tableau pour la clé du nom de traitement du dispositif dans le premier argument et les clés dans le second argument.

Pour le nom de processus du premier argument, sign_in, sign_up et account_update qui ont déjà été définis dans l'appareil peuvent être utilisés, et ils correspondent aux processus au moment de la connexion, de l'inscription et de la mise à jour des informations de compte, respectivement.

Rôle de nom de processus
:sign_in Lors de la connexion (connexion) traitement
:sign_up Lors du traitement de l'inscription (nouvelle inscription)
:account_update Lors du traitement de la mise à jour des informations de compte

Écrivez ces descriptions dans ** application_controller.rb **.

app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  private
  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
  end
end

Notez que nous utilisons l'option if de before_action. En spécifiant le nom de la méthode dans la valeur, il est défini pour exécuter le processus uniquement lorsque la valeur de retour est true.

Cette fois, j'ai spécifié le nom de la méthode d'assistance de devise: devise_controller ?, Et s'il s'agit du traitement du contrôleur lié à devise, il est configuré pour exécuter la méthode configure_permitted_parameters uniquement à ce moment-là. Même si le processus est lu par d'autres contrôleurs de tweets, il n'est pas exécuté.

À propos des autres commandes

rails g commande de migration

Une commande pour générer une migration. La migration était précédemment générée avec le modèle avec la commande rails g model, mais elle est utilisée lors de la modification du contenu d'une table déjà créée.

Cette commande décrit automatiquement le type d'opération de table à effectuer en fonction du nom du fichier spécifié.

rails g migration Ajouter un nom de colonne Pour Ajouter un nom de table de destination En utilisant type, la migration sera générée avec le code requis pour ajouter la colonne à la table.

** Étui serpent et étui camel **

L'étui serpent et l'étui chameau représentent chacun comment séparer les mots.

Les cas de serpent utilisent des traits de soulignement pour séparer les mots Le cas de chameau capitalise les sauts de mots Il existe plusieurs façons de séparer les mots lorsque les mots des noms de variables ou de fonctions sont contigus. Consultez le tableau ci-dessous.

Méthode de notation Exemple d'explication
Camel case adminUserCommentCreator avec débuts inférieurs et séparateurs de mots supérieurs
Cas supérieur de chameau Un des cas de chameau. AdminUserCommentCreator qui met en majuscule les délimiteurs de mots depuis le début
Administrateur de cas de serpent avec soulignement pour les sauts de mots_user_comment_creator

La convention de dénomination habituelle pour les rails est la suivante.

Cible de la dénomination Conventions de dénomination habituelles
Nom de la classe Cas supérieur de chameau
Nom de la méthode Cas du serpent
Nom de la variable Snake case

Respectez ces conventions de dénomination lors de la création de vos propres classes et méthodes.

Recommended Posts

Manipuler le dispositif avec des rails
[Rails] concevoir
Créer ma page avec Rails
[Rails] Présentation du dispositif
Comment gérer les erreurs de connexion avec l'appareil
[Rails] conçoit une méthode d'aide
[Rails] Personnaliser la validation de l'appareil
[Rails 6] Erreur d'exécution avec $ rails s
Gérez les fichiers avec NIO.2.
Gérez JSON avec minimal-json
[Rails] Didacticiel Apprendre avec les rails
[Rails] Test avec RSpec
[Rails] Développement avec MySQL
[Rails] conçoit une méthode d'introduction
Prend en charge la multilinguisme avec Rails!
[rails] concevoir les valeurs par défaut
Je souhaite authentifier les utilisateurs auprès de Rails avec Devise + OmniAuth
[Rails] Configuration initiale de la connexion créée par l'utilisateur avec devise, devise_token_auth
[Rails] Introduction aux principes de base du dispositif
[Rails] Polymorphique express avec graphql-ruby
Qu'est-ce que Rails Gem Concevoir?
[Rails] Télécharger des vidéos avec Rails (ActiveStorage)
[Rails] Flux lors de l'installation du dispositif de gemmes
[Vue Rails] "Hello Vue!" Affiché avec Vue + Rails
Japaneseize en utilisant i18n avec Rails
Préparation au développement avec Rails
(Pour les débutants) [Rails] Installer Devise
Exécuter des rails à chaque fois dans le docker
[Docker] Construction de l'environnement Rails 5.2 avec docker
Utilisez plusieurs bases de données avec Rails 6.0
[Rails] Ajouter une colonne à concevoir
[Rails] Spécifiez le format avec link_to
[rails] erreur lors de l'installation du périphérique
[Docker] À utiliser à tout moment avec Docker + Rails
Gérer les dates avec Javascript (moment.js)
J'étais accro à la configuration de default_url_options avec l'introduction de la conception de Rails
[rails] Problèmes qui ne peuvent pas être enregistrés / connectés avec l'appareil
[Rails] Comment utiliser la "devise" des gemmes
[Rails] Transmission push avec LINE Bot
[Rails] Rendre la pagination compatible avec Ajax
[rails] Implémentation de l'écran de connexion dans la devise
[Rails] Erreur de validation inattendue dans l'appareil
Créer une fonction de pagination avec Rails Kaminari
[Grover] Générer un PDF avec des rails [version 2020]