Fichier pour modifier la requête SQL pour créer 'post' ?

Salut tout le monde, pour donner un peu de contexte, j’essaie d’ajouter une autre colonne au schéma de la table posts, je veux ajouter une autre colonne qui est meta_tag_id. J’ai atteint un point où je peux passer les données que je veux stocker dans les paramètres de PostController, vérifiez le log ci-dessous pour référence (ceci provient des logs de 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"}

Maintenant, ce que je veux réaliser, c’est insérer le paramètre meta_tag_id :point_up: dans une autre colonne de la table posts, pour référence, voici un exemple de logs de la requête SQL lors de l’insertion d’un enregistrement dans ma table posts :

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"

Je serais reconnaissant si vous pouviez m’orienter dans la bonne direction. Je ne suis pas familier avec Ruby, donc j’ai du mal à trouver ce que je devrais modifier pour ajouter une nouvelle colonne et intégrer la variable meta_tag_id aux valeurs de la requête. Merci d’avance les gars ! :smile:

Modifier une table clé comme celle-ci est probablement risqué. Envisagez plutôt d’utiliser le modèle PostCustomField. Il existe précisément dans ce but : attacher des données personnalisées spécifiques aux Posts, généralement dans un plugin.

Si vous rencontrez des problèmes de performance, vous pourrez peut-être revoir cette décision, mais il s’agit d’une solution beaucoup plus simple et plus sûre.

4 « J'aime »

Merci pour votre réponse, d’accord, donc mon meta_tag_id sera stocké dans la table post_custom_field en utilisant la classe PostCustomField ? Ensuite, pour accéder aux données stockées sur le flux de publication, je devrais également récupérer les données de la table post_custom_field et incorporer les meta_tag_ids aux publications ? Est-ce que je comprends correctement le cas d’utilisation de la classe PostCustomField ?

Voir How to add custom fields to models

Il n’y a pas d’exemple pour les Posts, mais il y en a pour les Topics et les Categories, et ils fonctionnent de la même manière.

2 « J'aime »

Voici des exemples de leur utilisation :

et

Assurez-vous de bien connaître les concepts de Rails Active Record Model, car vous voudriez normalement tout faire via Ruby on Rails plutôt que directement sur la base de données.

3 « J'aime »

Merci pour vos réponses, je vais examiner les références et les exemples que vous m’avez donnés. Oh, je ne suis pas encore familier avec le concept d’Active Model, ni avec Ruby en général. C’est très utile, merci encore les gars. :folded_hands:

1 « J'aime »

C’est Lego, pour les bases de données :brick:

1 « J'aime »