Datei zum Ändern der SQL-Abfrage zum Erstellen von 'post'?

Hallo Leute, um etwas Hintergrund zu geben: Ich versuche, eine weitere Spalte zum Tabellenschema der posts-Tabelle hinzuzufügen. Ich möchte eine weitere Spalte hinzufügen, nämlich meta_tag_id. Ich bin an einem Punkt angelangt, an dem ich die Daten, die ich speichern möchte, in den Parametern von PostController übergeben kann. Sehen Sie sich das folgende Log als Referenz an (dies stammt aus den Logs von d/rails s):

Started POST "/posts" for 127.0.0.1 at 2022-09-16 06:08:19 +0000
Processing by PostsController#create as */*
  Parameters: {"raw"=>"Another dummy reply, for testing purposes.", "unlist_topic"=>"false", "category"=>"5", "topic_id"=>"23", "is_warning"=>"false", "archetype"=>"regular", "typing_duration_msecs"=>"4500", "composer_open_duration_msecs"=>"11534", "featured_link"=>"", "shared_draft"=>"false", "draft_key"=>"topic_23", "meta_tag_id"=>"summary", "nested_post"=>"true"}

Was ich jetzt erreichen möchte, ist, den meta_tag_id-Parameter :point_up: in eine andere Spalte der posts-Tabelle einzufügen. Als Referenz hier ein Beispiel-Log der SQL-Abfrage beim Einfügen eines Datensatzes in meine posts-Tabelle:

Post Create (1.1ms)  INSERT INTO "posts" ("user_id", "topic_id", "post_number", "raw", "cooked", "created_at", "updated_at", "sort_order", "last_editor_id", "last_version_at", "word_count", "baked_at", "baked_version") VALUES (1, 23, 7, 'Another dummy reply, for testing purposes.', '<p>Another dummy reply, for testing purposes.</p>', '2022-09-16 06:08:22.283658', '2022-09-16 06:08:22.283658', 7, 1, '2022-09-16 06:08:22.293786', 6, '2022-09-16 06:08:22.283601', 2) RETURNING "id"

Ich wäre dankbar, wenn ihr mir in die richtige Richtung weisen könntet. Ich bin nicht mit Ruby vertraut und habe daher Schwierigkeiten, die Stelle zu finden, die ich ändern müsste, um die neue Spalte hinzuzufügen und die Variable meta_tag_id in die Werte der Abfrage zu integrieren. Vielen Dank im Voraus, Leute! :smile:

Das direkte Ändern einer solchen Schlüsseltabelle ist wahrscheinlich riskant. Ziehen Sie stattdessen die Verwendung des PostCustomField-Modells in Betracht. Es existiert genau für diesen Zweck: um benutzerdefinierte Daten an Beiträge anzuhängen, normalerweise in einem Plugin.

Wenn Sie Leistungsprobleme haben, können Sie dies vielleicht noch einmal überdenken, aber dies ist eine viel einfachere und sicherere Lösung.

4 „Gefällt mir“

Vielen Dank für die Antwort, okay, also wird meine meta_tag_id in der Tabelle post_custom_field unter Verwendung der Klasse PostCustomField gespeichert? Um dann die gespeicherten Daten im Post-Stream abzurufen, sollte ich auch die Daten der Tabelle post_custom_field abrufen und die meta_tag_ids in die Posts integrieren? Verstehe ich den Anwendungsfall der Klasse PostCustomField korrekt?

Siehe How to add custom fields to models

Es gibt kein Beispiel für Posts, aber es gibt Beispiele für Topics und Categories, und sie funktionieren auf die gleiche Weise.

2 „Gefällt mir“

Hier sind Beispiele für deren Verwendung:

und

Stellen Sie sicher, dass Sie mit den Konzepten von Rails Active Record Model vertraut sind, da Sie normalerweise alles über Ruby on Rails und nicht direkt über die Datenbank erledigen möchten.

3 „Gefällt mir“

Vielen Dank für die Antworten, ich werde mir die Referenzen und Beispiele ansehen, die ihr mir gegeben habt. Oh, ich bin mit dem Active Record-Konzept, oder Ruby im Allgemeinen, noch nicht vertraut. Das ist sehr hilfreich, nochmals vielen Dank, Leute. :folded_hands:

1 „Gefällt mir“

Es ist Lego für Datenbanken :brick:

1 „Gefällt mir“