[RUBY] Einführung und Vorsichtsmaßnahmen von gem Friendly Id

Über gem Friendly Id

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.

Implementierungsbeispiel

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.

wichtiger Punkt

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

Einführung und Vorsichtsmaßnahmen von gem Friendly Id
Einführung von Docker Hub und Befehlen Selbstlernend ①
Einführung und Verwendungserklärung von Font Awesome
Einführung von pay.jp
Einführung von Milkode
Einführung von Rspec und japanischer Lokalisierung von Fehlermeldungen
Rubin und Edelstein
Automatische Zuweisung von Namens- und ID-Attributen durch form_with
Einführung von Docker - Teil 1--
[Rails] Einführung von PAY.JP
Einführung der Benutzerauthentifizierung