[RUBY] Tutoriel Rails (4e édition) Mémo Chapitre 6

Tutoriel Rails (4e édition) Notes personnelles Décrivez la partie qui vous intéresse et la partie que vous pourriez oublier.

Vous avez créé le contrôleur Users à la fin du chapitre précédent (5.4). La continuation. Du chapitre 6 au chapitre 12, nous créerons chaque fonction d'authentification utilisateur. Parmi ceux-ci, le chapitre 6 traite du modèle de données et du stockage de l'utilisateur.

Chapitre 6 Création d'un modèle utilisateur

Rails dispose déjà d'un mécanisme pour implémenter l'authentification, mais chaque service nécessite beaucoup d'authentification personnalisée. Il s'agit d'une réinvention de la roue, mais le tutoriel Rails réinvente la roue car il est plus facile de mettre en œuvre une certification tierce si vous savez comment le faire.

6.1 Modèle utilisateur

Rails appelle la structure de données par défaut qu'il traite comme un modèle de données Model (M dans MVC). Rails utilise par défaut ʻActive Record` pour interagir avec ce modèle. C'est quelque chose qui fait CRUD et la construction sans être conscient de SQL.

6.1.1 Migration de la base de données

Créez un modèle utilisateur pour conserver la base de données. Tout comme lors de la création du contrôleur Users, $ rails g.

Pour rappel Le contrôleur est ** pluriel ** ʻUsers Le modèle est ** singulier ** ʻUser

Il est d'usage de dire.

$ rails g model User name:string email:string

Passez l'attribut utilisé dans DB (nom de colonne dans DB) et le type avec : entre les deux.

Diverses choses sont générées, mais dans db / migrate / il y a un fichier appelé time stamp_create_model name s.rb. Les informations pour créer un DB sont définies ici.

db/migrate/Horodatage_create_users.rb


class CreateUsers < ActiveRecord::Migration[5.0]
  def change
    create_table :users do |t|
      t.string :name
      t.string :email

      t.timestamps
    end
  end
end

L'identifiant et l'horodatage sont automatiquement préparés même si vous ne les spécifiez pas. En regardant la partie du nom de classe, il semble qu'elle hérite de ʻActiveRecord :: Migration [5.0] . (5.0 dans Rails tuto, mais notation 5.1 pour mon environnement) timestamps crée deux colonnes pour les horodatages [ created_at, ʻupdated_at].

Est-ce que c'est comme ça avec mysql?

mysql


CREATE DATABASE User;
USE Users;
CREATE TABLE users(
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(300),
  email VARCHAR(300),
  created_at TIMESTAMP NOT NULL CURRENT_TIMESTAMP,
  updated_at TIMESTAMP NOT NULL CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
);

Chaque fois que j'écris sql, j'écris qu'un oncle qui n'autorise pas les majuscules ou les minuscules est susceptible de se produire (j'étais également dans mon emploi précédent). Pour être honnête, je pense qu'il est normal d'utiliser toutes les lettres minuscules à cette époque. ~~ Au fait, dans mon travail précédent, écrivez la date dans varchar () et arrêtez de faire de la merde ~~

Appliquer la migration. Selon un ami, on m'a rappelé que c'était une commande d'exploser avec un soin particulier dans le développement multi-personnes. Soyons prudents. Le côté DB n'est pas géré par version.

$ rails db:migrate

6.1.2 Fichier modèle

** Exercice ** J'ai fait ʻUser.new` dans la console Rails et vérifié quel type de relation d'héritage il avait.

ʻUser class <ʻApplicationRecord <ʻActiveRecord :: Base <ʻObject <BaseObject

6.1.3 Créer un objet utilisateur

option bac à sable sur console

Annulera toutes les modifications apportées à la base de données à la fin.

$ rails console --sandbox

Expérimentez cela. La classe utilisateur a été créée lors de la création du modèle (ʻapp / model / ), qui est héritée de ʻActiveRecord.

Méthode utilisée ci-dessous valid?: Confirmation de validité (Validité) save: Enregistrer Lors de l'enregistrement, l'horodatage est marqué sur create_at, ʻupdate_at`. Dans la valeur de retour, la valeur booléenne indiquant si elle a été enregistrée ou non est renvoyée.

create: User.new le crée uniquement en mémoire, mais l'enregistre en même temps qu'il est créé.

** Exercice ** User.create user.name ActiceSupport::timeWithZone

6.2 Valider les utilisateurs

6.2.1 Valider

En bref, c'est comme spécifier un type de colonne dans SQL Pour : email, Double ou Boolean n'est pas inclus. Les 4 points suivants

--Présence --Longueur --Format --Unicité

Impressions

Recommended Posts

Tutoriel Rails (4e édition) Mémo Chapitre 6
Tutoriel Rails 6e édition Résumé d'apprentissage Chapitre 10
Rails Tutorial 6e édition Résumé de l'apprentissage Chapitre 7
Tutoriel Rails 6e édition Résumé de l'apprentissage Chapitre 4
Tutoriel Rails 6e édition Résumé de l'apprentissage Chapitre 9
Tutoriel Rails 6e édition Résumé de l'apprentissage Chapitre 6
Tutoriel Rails 6e édition Résumé de l'apprentissage Chapitre 5
Tutoriel Rails 6e édition Résumé de l'apprentissage Chapitre 3
Rails Tutorial 6e édition Résumé d'apprentissage Chapitre 8
tutoriel rails Chapitre 6
tutoriel rails Chapitre 1
tutoriel rails Chapitre 7
tutoriel rails Chapitre 5
tutoriel rails Chapitre 10
tutoriel rails Chapitre 9
Tutoriel Rails 4e édition: Chapitre 1 De zéro au déploiement
tutoriel rails Chapitre 8
Tutoriel Rails Chapitre 3 Apprentissage
Mémorandum du didacticiel Rails (Chapitre 3, 3.1)
Tutoriel Rails Chapitre 4 Apprentissage
Tutoriel Rails Chapitre 1 Apprentissage
Tutoriel Rails Chapitre 2 Apprentissage
[Tutoriel Rails Chapitre 4] Rubis à saveur de Rails
rails tutry
[Tutoriel Rails Chapitre 5] Créer une mise en page
tutoriel sur les rails
tutoriel sur les rails
Tutoriel de mastication des rails [Chapitre 2 Application jouet]
rails tutry
tutoriel sur les rails
tutoriel sur les rails
Tutoriel Rails Chapitre 0: Apprentissage préliminaire des connaissances de base 5
tutoriel docker (mémo)
Test du tutoriel sur les rails
Mémorandum du didacticiel Rails 1
Tutoriel Rails Memorandum 2
[Débutant] Tutoriel Rails
Tutoriel Rails Chapitre 1 De zéro au déploiement [Essayer]
Tutoriel de mastication des rails [Chapitre 3 Création de pages presque statiques]
[Mémo d'apprentissage] Métaprogrammation Ruby 2e édition: Chapitre 3: Méthode
Résoudre Gem :: FilePermissionError lors de l'exécution de rails d'installation de gem (Tutoriel Rails Chapitre 1)