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.
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.
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.
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
** 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
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
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é
Recommended Posts