[RUBY] Rails / users /: id / to / {random_srting}: routage par défaut

Chose que tu veux faire

--Je veux raccourcir le chemin de l'action #Show autant que possible

Je vais le laisser comme un mémorandum

Définissez: id dans / users /: id / sur un attribut autre que id

utiliser le modèle: to_param

Générer une chaîne aléatoire sécurisée pour les URL avec SecureRandom.urlsafe dans url_token Exemple à utiliser à la place de id

Si vous encodez la date et l'heure actuelles + un nombre aléatoire, la possibilité de collision peut être réduite.

class Article < ApplicationRecord
  attribute :url_token, :string, default: -> { SecureRandom.urlsafe_base64(8) }
.
.
.
  def to_param
    url_token
  end
end

uuid est le suivant (Par la suite, je vais adopter uuid et laisser une explication, je pense que cela ne correspond pas à l'objectif de raccourcir l'URL)

class Article < ApplicationRecord
  attribute :uuid, :string, default: -> { SecureRandom.uuid }
.
.
.
  def to_param
    uuid
  end
end

Controller

Après cela, réécrivez la partie en utilisant params [: id] dans le contrôleur en params [: uuid]

Routing: param: :uuid

Rails.application.routes.draw do
  resources :users, param: :uuid
.
.
.
end

Ajoutez simplement param :: uuid Cela remplace / users /: id par / users /: uuid

Je veux changer / users /: uuid en /: uuid

Routing: param: :uuid

Ajouter chemin: '/'

Rails.application.routes.draw do
  resources :users, param: :uuid, path: '/'
.
.
.
end

Si vous vérifiez le routage à ce moment avec Rails routes

       users GET    /                        users#index
             POST   /                        users#create
    new_user GET    /new(.:format)           users#new
   edit_user GET    /:uuid/edit(.:format)    users#edit
        user GET    /:uuid(.:format)         users#show
             PATCH  /:uuid(.:format)         users#update
             PUT    /:uuid(.:format)         users#update
             DELETE /:uuid(.:format)         users#destroy

ʻUsers_pathest GET '/' et chevauche le root_path, POST /devient égalementErreur de routage: aucune route ne correspond à [POST]" / users "` et ne fonctionne pas

Par conséquent, comme mesure provisoire, nous avons décidé de n'utiliser que des actions autres que index, new et create en tant que chemins basés sur la racine.

Le véritable routes.rb est

Rails.application.routes.draw do
  resources :users, only: [:index, :new, :create]
  resources :users, param: :uuid, path: '/', only: [:show, :edit, :update, :destroy]
  .
  .
  .
end

Je vais essayer ça pour le moment avec juste moche

référence

Comment utiliser /: username au lieu de / users /: id sur les rails · Yuichi Takada https://blog.takady.net/blog/2015/11/29/rails-routing-with-username-instead-of- id /

Recommended Posts

Rails / users /: id / to / {random_srting}: routage par défaut
Comment écrire le routage Rails
Définir autre chose que l'ID pour le routage Rails
[rails] Comment configurer le routage dans les ressources
À propos du routage des rails
Principes de base du routage des rails
Résumé du routage Rails 6.0
[Ruby on Rails] Remplacez l'ID d'URL par le nom de la colonne
Je souhaite authentifier les utilisateurs auprès de Rails avec Devise + OmniAuth
[Rails] Concevoir un résumé de routage associé
Présentation de Bootstrap à Rails 5
Présentation de Bootstrap aux rails !!
Présentation de Vue.js à Rails
Comment désinstaller Rails
[Note] Confirmation de routage Rails3
[Rails] Paramètres d'acheminement complets