Implémentez-le plus simplement que la connexion par e-mail et mot de passe utilisée dans le didacticiel sur les rails. N'utilisez pas de pierres précieuses telles que la devise.
Ici, connectez-vous en utilisant le nom et le mot de passe de la table Room.
MacBook % rails g model Room name:string
db/migrate/Horodatage.create_rooms.rb
class CreateRooms < ActiveRecord::Migration[6.0]
def change
create_table :rooms do |t|
t.string :name, null: false
t.timestamps
end
end
end
MacBook % rails db:migrate
app/models/room.rb
class Room < ApplicationRecord
validates :name, presence: true, length: { maximum: 50 }
has_secure_password
end
--Créez une migration qui ajoute une colonne password_digest et appliquez la migration
MacBook % rails generate migration add_password_digest_to_rooms password_digest:string
MacBook % rails db:migrate
--Ouvrez Gemfile, décommentez gem'bcrypt 'et installez
Gemfile
~
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
gem 'bcrypt', '~> 3.1.7'
# Use Active Storage variant
# gem 'image_processing', '~> 1.2'
~
app/models/room.rb
class Room < ApplicationRecord
validates :name, presence: true, length: { maximum: 50 }
has_secure_password
validates :password, presence: true, length: { minimum: 6 }
end
--Vérifiez si l'instance peut être créée et enregistrée dans la base de données avec la console Rails
Un terminal différent de celui qui a démarré le serveur
MacBook % rails c
~
irb(main):001:0> @room = Room.new(name:"tokyoroom",password:"password",password_confirmation:"password")
(2.2ms) SET NAMES utf8mb4, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
=> #<Room id: nil, name: "tokyoroom", created_at: nil, updated_at: nil, password_digest: [FILTERED]>
irb(main):002:0> @room.save
(0.7ms) BEGIN
Room Create (3.3ms) INSERT INTO `rooms` (`name`, `created_at`, `updated_at`, `password_digest`) VALUES ('tokyoroom', '2020-09-23 07:26:30.787094', '2020-09-23 07:26:30.787094', '$2a$12$SmCtpmRZn0M5BMtuT6BmAOKO.DMAmMOIYSXoHlxDrSbA2AQcAYnMC')
(5.0ms) COMMIT
=> true
(https://qiita.com/yongjugithub/items/65fcdf73e42857297321)
https://railstutorial.jp/chapters/modeling_users?version=5.1#sec-adding_a_secure_password
Recommended Posts