gpt4 book ai didi

mysql - 如何在 MySQL 中存储更改列的数据

转载 作者:行者123 更新时间:2023-11-29 12:12:41 25 4
gpt4 key购买 nike

我正在 Rails 项目的 MySQL 数据库中创建一个新表。问题是有些字段将始终在表中,但其他字段我还不知道——它们将是用户生成的。我知道不可能将字段动态添加到表中。那么,有没有什么好的既定解决方案呢?也许是 gem ?

为了清楚起见,假设我有一个名为 UserInformation 的表。它有姓名、性别、高度列。但我需要允许用户输入任何其他内容。因此,对于用户 A,我需要存储姓名、性别、高度、体重。对于用户 B,我需要存储姓名、性别、高度和 favorite_tv_show。对于用户 C,我需要存储姓名、性别、高度和 favorite_tv_show、favorite_color、 mothers_name。

因为我不知道所有潜在属性,所以无法提前将它们添加为列名称。

我无法想象我是第一个遇到这个问题的人。预先非常感谢您!

最佳答案

创建另一个表,其中包含key(字符串,索引)、value(字符串,可能)和user_id(整数)。您可能需要调整一些内容以满足您的需求,这只是一个想法,可能不适合原样。

对于您希望存储的每个用户的每个属性,在该表中创建一个单独的行。

我将其称为ExtraField:

class ExtraField < ActiveRecord::Base
belongs_to :user
end

class User < ActiveRecord::Base
has_many :extra_fields

accepts_nested_attributes_for :extra_fields,
allow_destroy: true,
reject_if: :all_blank
end

您必须使用 nested form 编辑这些属性。概念有点高级了,还有不少docs关于它。本质上,它允许您使用同一组参数不仅更新记录本身(如用户),还可以更新其关联的记录(如额外字段)。这允许您编辑单个页面上的所有字段。

关于mysql - 如何在 MySQL 中存储更改列的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30384311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com