Implementieren Sie es einfacher als die im Rails-Tutorial verwendete E-Mail- und Kennwortanmeldung. Verwenden Sie keine Edelsteine wie Geräte.
Melden Sie sich hier mit dem Namen und dem Passwort der Raumtabelle an.
MacBook % rails g model Room name:string
db/migrate/Zeitstempel.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
--Erstellen Sie eine Migration, die eine Spalte password_digest hinzufügt, und wenden Sie die Migration an
MacBook % rails generate migration add_password_digest_to_rooms password_digest:string
MacBook % rails db:migrate
--Öffnen Sie Gemfile, kommentieren Sie gem'bcrypt 'aus und installieren Sie es
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
--Überprüfen Sie, ob die Instanz mit der Rails-Konsole erstellt und in der Datenbank gespeichert werden kann
Ein anderes Terminal als das, mit dem der Server gestartet wurde
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