: id
für / users /: id / zu verwendenIch werde es als Memorandum belassen
Generieren Sie mit SecureRandom.urlsafe in url_token eine URL-sichere Zufallszeichenfolge Beispiel anstelle von id zu verwenden
Wenn Sie das aktuelle Datum und die aktuelle Uhrzeit + Zufallszahl codieren, kann die Möglichkeit einer Kollision verringert werden.
class Article < ApplicationRecord
attribute :url_token, :string, default: -> { SecureRandom.urlsafe_base64(8) }
.
.
.
def to_param
url_token
end
end
uuid ist wie folgt (Im Folgenden werde ich uuid übernehmen und eine Erklärung hinterlassen. Ich denke, dass dies nicht zum Zweck der Verkürzung der URL passt.)
class Article < ApplicationRecord
attribute :uuid, :string, default: -> { SecureRandom.uuid }
.
.
.
def to_param
uuid
end
end
Controller
Schreiben Sie danach den Teil mit params [: id]
in der Steuerung in params [: uuid] um
Routing: param: :uuid
Rails.application.routes.draw do
resources :users, param: :uuid
.
.
.
end
Fügen Sie einfach param :: uuid
hinzu
Dies ersetzt / users /: id
durch / users /: uuid
Routing: param: :uuid
Fügen Sie path: '/'
hinzu
Rails.application.routes.draw do
resources :users, param: :uuid, path: '/'
.
.
.
end
Wenn Sie das Routing zu diesem Zeitpunkt mit "Rails-Routen" überprüfen
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_path
überschneidet sich mit root_path mit GET '/' und
"POST /" wird auch zu "Routing-Fehler: Keine Route stimmt mit [POST]" / users "überein und funktioniert nicht
Aus vorläufigen Gründen haben wir uns daher entschlossen, nur andere Aktionen als index, new und create als root-basierte Pfade zu verwenden.
Die tatsächliche route.rb
ist
Rails.application.routes.draw do
resources :users, only: [:index, :new, :create]
resources :users, param: :uuid, path: '/', only: [:show, :edit, :update, :destroy]
.
.
.
end
Ich werde es vorerst mit nur hässlich versuchen
Verwendung von /: Benutzername anstelle von / Benutzer /: ID auf Schienen · Yuichi Takada https://blog.takady.net/blog/2015/11/29/rails-routing-with-username-instead-of- Ich würde /
Recommended Posts