[RUBY] [Schienen] Verwendung von Geräten (Hinweis)

Einführung

Bis jetzt hatte ich selbst Authentifizierungsfunktionen wie An- und Abmelden implementiert, aber ich möchte dieses Mal beim Erstellen eines Portfolios das Gerät verwenden, sodass ich diesen Artikel als Erinnerung an die Verwendung belasse.

Ausführungsumgebung

Es wurde bestätigt, dass dieser Artikel in den folgenden Umgebungen funktioniert. ruby 2.7.1 rails 6.0.3 devise 4.7.3

Installation

Gemfile hinzugefügt. Ich werde es in der zweiten Hälfte ins Japanische übersetzen, also werde ich auch dieses Juwel einbeziehen.

Gemfile


gem 'devise'
gem 'devise-i18n'
gem 'devise-i18n-views'

Führen Sie bundle install aus.

$ bundle install

Einstellungen vornehmen

Erstellen Sie verwandte Dateien.

$ rails g devise:install

Anschließend wird eine Datei erstellt und der folgende englische Text angezeigt.

Running via Spring preloader in process 5911
      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 *

===============================================================================
  1. Definieren Sie die Standard-URL-Option in der Umgebungsdatei.

config/environments/development.rb


config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  1. Definieren Sie die Root-URL.

config/routes.rb


root to: 'homes#index'
  1. Schreiben Sie Folgendes an die Stelle, an der Sie den Blitz anzeigen möchten.
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
  1. Die Anpassung der Ansicht wird später beschrieben.

Erstellen eines Benutzermodells

$ rails g devise User

In der erstellten Migrationsdatei gibt es nur E-Mail und Kennwort. Fügen Sie daher alle Spalten hinzu, die Sie hinzufügen möchten. Führen Sie nach dem Hinzufügen die Migration aus.

$ rails db:migrate

Öffnen Sie zu diesem Zeitpunkt http: // localhost: 3000 / users / sign_up und eine neue Registrierungsseite wird erstellt. Wenn Sie vergessen haben, eine Spalte hinzuzufügen, und diese später hinzufügen möchten, führen Sie Folgendes aus. (Dieses Mal wird davon ausgegangen, dass die Spalte Benutzername hinzugefügt wird.)

$ rails g migration add_username_to_users username:string

Geben Sie unbedingt den Benutzernamen ein, und fügen Sie eine NOT NULL-Einschränkung hinzu.

db/migrate/XXXXXXXXXXXXXX_add_username_to_users.rb


class AddUsernameToUsers < ActiveRecord::Migration[6.0]
  def change
    add_column :users, :username, :string, null: false
  end
end

Erstellen einer Ansicht für das Gerät

Ich möchte die Ansicht anpassen, also führen Sie Folgendes aus.

$ rails g devise:views users

Reflektiert den bearbeiteten Inhalt der Ansicht.

config/initializers/devise.rb


#Konfiguration in Zeile 247.scoped_views =Kommentieren Sie false aus und ändern Sie es in true
config.scoped_views = true

Ermöglicht die Registrierung von Benutzernamen während der Anmeldung.

app/controllers/application_controller.rb


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

  protected

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

Erstellen Sie einen Controller und ändern Sie das Routing

$ rails g devise:controllers users

Die Controller-Datei und der englische Text werden angezeigt.

Running via Spring preloader in process 9004
      create  app/controllers/users/confirmations_controller.rb
      create  app/controllers/users/passwords_controller.rb
      create  app/controllers/users/registrations_controller.rb
      create  app/controllers/users/sessions_controller.rb
      create  app/controllers/users/unlocks_controller.rb
      create  app/controllers/users/omniauth_callbacks_controller.rb
===============================================================================

Some setup you must do manually if you haven't yet:

  Ensure you have overridden routes for generated controllers in your routes.rb.
  For example:

    Rails.application.routes.draw do
      devise_for :users, controllers: {
        sessions: 'users/sessions'
      }
    end

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

Lassen Sie uns hier das aktuelle Routing überprüfen.

$ rails routes

Prefix               Verb   URI Pattern                          Controller#Action
new_user_session     GET    /users/sign_in(.:format)             devise/sessions#new
user_session         POST   /users/sign_in(.:format)             devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format)            devise/sessions#destroy
...
new_user_registration GET    /users/sign_up(.:format)       devise/registrations#new

Wenn der Controller # -Aktionsteil Gerät / Registrierungen, Gerät / Sitzungen wie dieses ist, wird die zu definierende Methode nicht wiedergegeben.

Überschreiben Sie die Route gemäß dem englischen Text, der beim Erstellen des Controllers angezeigt wurde.

config/routes.rb


devise_for :users, controllers: {
    registrations: 'users/registrations',
    sessions: 'users/sessions'
  }

Nachdem wir es überschrieben haben, überprüfen Sie das aktuelle Routing.

$ rails routes

Prefix               Verb   URI Pattern                    Controller#Action
new_user_session     GET    /users/sign_in(.:format)       users/sessions#new
user_session         POST   /users/sign_in(.:format)       users/sessions#create
destroy_user_session DELETE /users/sign_out(.:format)      users/sessions#destroy
...
new_user_registration GET    /users/sign_up(.:format)      users/registrations#new                   

Jetzt können Sie den Controller anpassen. Definieren Sie die Methode.

app/controllers/users/registrations_controller.rb


  #Leiten Sie das Ziel nach dem Erstellen eines Kontos um
  def after_sign_up_path_for(resource)
    root_path
  end

  #Leiten Sie das Ziel nach dem Bearbeiten des Kontos um
  def after_update_path_for(resource)
    root_path
  end

app/controllers/users/sessions_controller.rb


  #Ziel nach Abmeldung umleiten
  def after_sign_out_path_for(resource)
    root_path
  end

  #Ziel nach Anmeldung umleiten
  def after_sign_in_path_for(resource)
    root_path
  end

Jetzt befinden sich alle Weiterleitungsziele auf der obersten Seite.

Ins Japanische übersetzen

Stellen Sie zunächst die Standardsprache für diese Rails-Anwendung auf Japanisch ein.

config/application.rb


require_relative 'boot'
require 'rails/all'

Bundler.require(*Rails.groups)

module ConnectStudy
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 6.0
  
    config.i18n.default_locale = :ja #Hier hinzufügen
  end
end

Generieren Sie eine japanische Übersetzungsdatei für devise.

$ rails g devise:views:locale ja

Dies wird auf Japanisch sein. Vergessen Sie nicht, den Server neu zu starten, wenn Sie die Konfiguration ändern.

devise hat auch viele nützliche Hilfsmethoden, daher möchte ich sie verwenden, um Apps effizient zu entwickeln.

Recommended Posts

[Schienen] Verwendung von Geräten (Hinweis)
[Hinweis] Verwendung von Rails 6 Devise + Cancancan
[Rails] Wie man Edelstein "devise" benutzt
[Rails] Verwendung von Enum
[Rails] Verwendung von Enum
Verwendung von Rails Join
[Rails] Verwendung der Validierung
[Rails] So verwenden Sie authenticate_user!
[Schienen] Verwendung von Scope
[Rails] Verwendung von Flash-Nachrichten
[Rails] So verwenden Sie die Hilfsmethode von devise before_action: authenticate_user!
Verwendung von Ruby on Rails
[Rails] Verwendung von Active Storage
[Einführung in Rails] Verwendung von Render
[Rails] Verwendung von ActiveRecord :: Bitemporal (BiTemporalDataModel)
[Schienen] Verwendung der Kartenmethode
Verwendung von MySQL im Rails-Tutorial
Verwendung der Java Scanner-Klasse (Hinweis)
[Ruby on Rails] Verwendung von redirect_to
[Rails] Verwendung von video_tag zum Anzeigen von Videos
Ruby: CSV :: Verwendung von Table Note
[Rails] Verwendung der Hilfsmethode, Confimartion
Verwendung von credentials.yml.enc aus Rails 5.2
[Rails] Wie man Geräte ins Japanische übersetzt
Verwendung von Map
Wie schreibe ich Rails
Wie benutzt man rbenv?
Verwendung mit_option
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Karte
Verwendung von collection_select
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
Verwendung von MapStruct
Verwendung von TreeSet
So deinstallieren Sie Rails
[Verwendung des Etiketts]
Wie man Identität benutzt
Wie man Hash benutzt
Verwendung von Dozer.mapper
Wie benutzt man Gradle?
Verwendung von org.immutables
Verwendung von java.util.stream.Collector
Verwendung von VisualVM
Verwendung von Map
[Rails] Verwendung von Auswahlfeldern in Ransack
Verwendung von Schienen g Gerüst, Funktionen, Vorsichtsmaßnahmen
Beachten Sie, wie Sie Swift Super Basic TableView verwenden
Verwendung von Segmented Control und zu notierenden Punkten
Verwendung von JQuery in Rails 6 js.erb