Es gibt einen FriendlyId Guide, daher werde ich einen Teilauszug übersetzen.
FriendlyId ist ein Ruby Active Record-Add-On, mit dem Sie die ID in einer URL durch eine Zeichenfolge ersetzen können.
** Wenn Sie FriendlyId nicht verwenden ** http://example.com/states/4323454 with FriendlyId http://example.com/states/washington Erstellen Sie einen Teil der URL, der die Seite mit lesbaren Schlüsselwörtern identifiziert. Dies macht die Anwendung sowohl für Benutzer als auch für Suchmaschinen benutzerfreundlicher.
Sie können sehen, dass der Ursprung des Edelsteinnamens FriendlyId von hier stammt.
Unser Service Carely verwendet tatsächlich friend_id, daher möchte ich es vorstellen.
class Customer < ApplicationRecord
include FriendlyId ---- ①
friendly_id :uuid, use: :finders ---- ②
(1) Um FriendlyId im Modell zu verwenden, müssen Sie zuerst das FriendlyId-Modul einschließen.
(2) Dies ist eine Beschreibung, mit der Sie die Suchmethode für aktive Datensätze mit uuid verwenden können.
customer: {
id: 10,
uuid: "28d0d2b8-3f2c-49d0-bf11-3b01ec164311"
firstName: "hogehoge",
lastName: "fugafuga",
mailAddress: "[email protected]",
age": "30"
・
・
・
}
Angenommen, Sie haben csutomer-Daten wie oben.
Ursprünglich unterstützt find nur den Primärschlüssel (id)
customer = Customer.find(10)
Es wird beschrieben als
friendly_id :uuid, use: :finders
Durch das Schreiben
customer = Customer.find("28d0d2b8-3f2c-49d0-bf11-3b01ec164311")
Sie können auch die find-Methode mit und uuid verwenden.
Auch beim Anzeigen der Informationen des entsprechenden Kunden für die URL
http://example.com/customer/10
Es war, aber mit FriendlyId
http://example.com/customer/28d0d2b8-3f2c-49d0-bf11-3b01ec164311
Es wird sein.
Die Vorteile der Verwendung von FriendlyId sind im FriendlyId-Handbuch beschrieben.
** Wenn Sie FriendlyId nicht verwenden **
http://example.com/states/4323454
with FriendlyId
http://example.com/states/washington
Es gibt einen Punkt, den man leicht identifizieren kann, indem man den Namen in die URL einfügt. Wenn man jedoch uuid wie unser Unternehmen verwendet, ist es unmöglich zu erraten, um welche Zahlendaten es sich handelt, und es ist auch unmöglich, die Größe der Tabelle zu erraten. Es gibt auch.
Sie können die URL auch mit einer Funktion namens slugged formatieren. Wenn Sie in dem im FriendlyId-Handbuch beschriebenen Beispiel eine Zeichenfolge mit einem Leerzeichen in den Titel einfügen, wie unten gezeigt, sollte die URL wie folgt lauten: "/ posts / this% 20is% 20the% 20first% 20post". Die Verwendung von Slugged erleichtert jedoch das Lesen als "/ posts / this-is-the-first-post".
# a migration
class CreatePosts < ActiveRecord::Migration
def self.up
create_table :posts do |t|
t.string :title, :null => false
t.string :slug, :null => false
t.text :body
end
add_index :posts, :slug, :unique => true
end
def self.down
drop_table :posts
end
end
# model
class Post < ActiveRecord::Base
extend FriendlyId
friendly_id :title, :use => :slugged
end
#Slugged erleichtert das Sehen und Formen
@post = Post.create(:title => "This is the first post!)
@post.friendly_id # "this-is-the-first-post "Kehrt zurück.
redirect_to @post #URL ist/posts/this-is-the-first-Es wird post sein.
Lassen Sie uns anhand der Beschreibung beurteilen, ob FriendlyId im Modell verwendet wird oder nicht. Es ist eine Geschichte, dass, wenn Sie es mit dem Vorurteil verwenden, dass Sie es in diesem Modell verwenden werden, weil Sie FriendlyId in den meisten Modellen verwenden, es sein wird ???.
Im Modell mit dem Namen company gibt es beispielsweise eine Spalte mit dem Namen uuid, die jedoch nicht als FriendlyId verwendet wird.
company = Company.find("16d28548-2e57-4e67-a041-1f05acfdabba")
Wenn du gerne schreibst
company = Company.find(16)
Das Ergebnis von wird angezeigt.
Dies scheint darauf zurückzuführen zu sein, dass die find-Methode, wenn sie eine Zeichenfolge als Argument übergibt, in eine Ganzzahl mit ".to_i" konvertiert wird.
Wenn ich eine Fehlermeldung erhalte, weiß ich, dass ich FriendlyId nicht verwende.
Da die Daten zurückgegeben wurden, wäre es für einen Moment anders, wenn die Daten von "uuid =" 16d28548-2e57-4e67-a041-1f05acfdabba "normal erhalten würden.
Recommended Posts