[RUBY] Wie ist die Datenstruktur von ActionText?

Ich persönlich hatte die Gelegenheit, "Aktionstext" vorzustellen, machen Sie sich also eine Notiz. Bei der Entwicklung eines Blog-Dienstes habe ich mich gefragt, wie ich "ActionText" in das "Artikel" -Modell einführen kann. Ich hoffe, es hilft jemandem.

Was ist Aktionstext?

Eine der Funktionen, die seit Rails6 verfügbar sind. Führen Sie Rails Rich-Text-Inhalte und Bearbeitungsfunktionen ein.

Was ich diesmal machen möchte

Ich möchte einen Artikelposting-Service erstellen. Erstellen Sie ein Artikelmodell mit drei Daten, Titel, Beschreibung und Text, und führen Sie ActionText ein, um den Text zu bearbeiten.

Datenstruktur

Erstellen eines Modells, das "ActionText" einführt

Generieren Sie ein Artikelmodell. title ist der Titel des Artikels und description ist die Beschreibung des Artikels. Beachten Sie, dass wir keine Spalten zum Speichern von Körperdaten erstellen.

rails g model Article title:string description:text

Führen Sie "Aktionstext" ein

ActionText kann mit dem folgenden Befehl installiert werden.

rails action_text:install

Bei der Installation von ActionText werden zwei Migrationsdateien generiert. Eine ist eine Datei, die sich auf "Active Storage" bezieht, und die andere ist eine Datei, die eine Tabelle mit "ActionText" erstellt. Die letztere Tabelle ist der Schlüssel zu der Datenstruktur, die ich in diesem Artikel erläutern möchte.

Rich-Text-Inhalte werden in einem eigenen RichText-Modell gespeichert, das jedem vorhandenen Active Record-Modell in der Anwendung zugeordnet ist. Alle eingebetteten Bilder (und andere Anhänge) werden automatisch in Active Storage gespeichert und dem enthaltenen RichText-Modell zugeordnet.

https://railsguides.jp/action_text_overview.html#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB

class CreateActionTextTables < ActiveRecord::Migration[5.2]
  def change
    create_table :action_text_rich_texts do |t|
      t.string     :name, null: false
      t.text       :body, limit: 16777215
      t.references :record, null: false, polymorphic: true, index: false

      t.datetime :created_at, null: false
      t.datetime :updated_at, null: false

      t.index [ :record_type, :record_id, :name ], name: "index_action_text_rich_texts_uniqueness", unique: true
    end
  end
end

Durch Verknüpfen der obigen Daten mit dem Modell "Artikel" ist es möglich, den Inhalt des Artikels mit Rich Text zu bearbeiten. Das Verknüpfen der Daten ist einfach. Fügen Sie sie wie folgt zum Modell hinzu.

article.rb


class Article < ApplicationRecord
  has_rich_text :content
end

Um welche Art von Datenstruktur handelt es sich?

Wie oben erläutert, enthält die Tabelle "Artikel" den Titel und die Beschreibung, und der Inhalt des Artikels ("Inhalt") wird in der Tabelle "ActionText :: RichText" gespeichert. Wenn Sie sich die Ergebnisse der folgenden Konsole ansehen, ist dies leichter vorstellbar.

#Artikelmodelldaten abrufen
irb(main):001:0> Article.all.first
=> #<Article id: 1, created_at: "2020-07-11 13:19:00", updated_at: "2020-07-11 13:19:00", title: "Prüfung", description: "Prüfungです">

#ActionText, der dem Artikelmodell zugeordnet ist::RichText-Daten abrufen
irb(main):002:0> Article.all.first.content
=> #<ActionText::RichText id: 1, name: "content", body: #<ActionText::Content "<div class=\"trix-conte...">, record_type: "Article", record_id: 1, created_at: "2020-07-11 13:19:00", updated_at: "2020-07-11 13:19:00">

#Wie erhalte ich den Inhalt eines Artikels?
irb(main):003:0> Article.all.first.content.body
=> #<ActionText::Content "<div class=\"trix-conte...">

Recommended Posts

Wie ist die Datenstruktur von ActionText?
'% 02d' Was ist der% von% 2?
Was ist ein Test? ・ Über die Wichtigkeit eines Tests
Was ist die Zupfmethode?
Was ist die BufferedReader-Klasse?
Rails6: Geben Sie die Anfangsdaten von ActionText mit seed ein
Wofür ist der Konstruktor?
Was ist die Initialisierungsmethode?
Was ist die Darstellung von Domänenwissen im [DDD] -Modell?
Was für ein StringUtil ist gut?
Filtern Sie die Schwankungen der Rohdaten
Was ist es? ~ 3 Arten von "Nein" ~
Was für eine Methode ist define_method?
Möchten Sie wissen, was Ruby n die Potenz von 2 ist? (Machturteil von 2)
Was ist @Override oder @SuppressWarnings ("SleepWhileInLoop") vor der Funktion? ?? ??
Datenstruktur
Was ist das beste Lesen von Dateien (Java)
Was sind die aktualisierten Funktionen von Java 13
Wofür ist das Fassadenmuster nützlich?
Der Inhalt der von CarrierWave gespeicherten Daten.
Was ist Cubby?
Erfahren Sie mehr mit Diagrammen !! Modellstruktur der Webanwendung Was ist ein MVC-Modell?
Was ist null? ]]
Der ActiveSupport-Unterstrich ist nicht die inverse Konvertierung von camelize
Was ist java
Was ist Schlüsselumhang?
Was ist das Java Servlet / JSP MVC-Modell?
Was ist Maven?
Die Reihenfolge der Java-Methodenmodifikatoren ist festgelegt
Was ist Jackson?
Was unterscheidet sich von der PHP-Sprache. [Hinweis]
Was ist Selbst
Was ist ArgumentMatcher?
Was ist IM-Jonglieren?
Was ist params
Was ist SLF4J?
Was ist Fassade? ??
Was ist der flüchtige Modifikator für Java-Variablen?
Was ist Gradle?
Was ist POJO?
Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Was ist java
Was ist centOS?
Was ist RubyGem?
Was sind die Vorteile von DI und Thymeleaf?
Was ist before_action?
Was ist Docker?
Rufen Sie den ersten Wochentag im aktuellen Gebietsschema ab (welcher Tag ist heute?)
Der offizielle Name von Spring MVC ist Spring Web MVC
Was ist Byte?
Was ist Tomcat?
Die Essenz von AspectJs Stimmung - warum Ihr "@ Transactional" ignoriert wird
Überprüfen Sie, ob has_many vorhanden ist und zu optional gehört: Was ist wahr?
Wenn der Schwebeflug von Eclipse schwer zu sehen ist
In Time.strptime ist% j (Gesamtdatum des Jahres)