--Je veux raccourcir le chemin de l'action #Show autant que possible
: id
pour / users /: id /Je vais le laisser comme un mémorandum
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
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 également
Erreur 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
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