修改用于创建'post'的SQL查询的文件?

大家好,为了提供一些背景信息,我正试图向 posts 表的表模式添加另一个列,我想添加的列是 meta_tag_id。我已经在 PostController 的参数中传递了我想存储的数据,请参考下面的日志(这是来自 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"}

现在,我想实现的是将 meta_tag_id 参数 :point_up: 插入到 posts 表的另一个列中,供参考,这是在我的 posts 表中插入记录时 SQL 查询的示例日志:

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"

如果大家能给我指明正确的方向,我将不胜感激。我对 Ruby 不熟悉,因此在查找应该修改以实现添加新列并将 meta_tag_id 变量合并到查询值中的地方时遇到了困难。提前感谢大家!:smile:

直接修改这样一个关键的表可能存在风险,请考虑改用 PostCustomField 模型,它的用途正是如此:将定制的自定义数据附加到帖子(Posts)上,通常是在插件中。

如果您遇到性能问题,或许可以重新考虑,但这是一种更简单、更安全的方法。

4 个赞

谢谢您的回复,好的,那么我的 meta_tag_id 将通过 PostCustomField 类存储在 post_custom_field 表中吗?然后,要在帖子流中访问存储的数据,我也应该获取 post_custom_field 表的数据,并将 meta_tag_ids 整合到帖子中吗?我的 PostCustomField 类的用例理解正确吗?

请参阅 How to add custom fields to models

没有帖子的示例,但有主题和类别的示例,它们的工作方式相同。

2 个赞

以下是它们的使用示例:

请确保您熟悉 Rails Active Record 模型 的概念,因为您通常希望通过 Ruby on Rails 而不是直接通过数据库来完成所有操作。

3 个赞

感谢各位的回复,我会查看你们提供的参考资料和示例。哦,我对 active model 的概念,或者说 Ruby 的一般概念还不太熟悉。这非常有帮助,再次感谢各位。:folded_hands:

1 个赞

这是乐高,用于数据库 :brick:

1 个赞