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.
Eine der Funktionen, die seit Rails6 verfügbar sind. Führen Sie Rails Rich-Text-Inhalte und Bearbeitungsfunktionen ein.
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.
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
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
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