将多个对象保存到表中的单个字段

时间:2008-11-17 11:28:16

标签: ruby-on-rails serialization

我想将从文本字段(用逗号分隔)收集的一组电子邮件地址保存到表格中的单个字段中。我试图使用序列化,但我收到SerializationTypeMismatch错误。我怎么能这样做?

这是我的模特:

班级船员<的ActiveRecord ::基

类收件人< HashWithIndifferentAccess;端

序列化:收件人,收件人

2 个答案:

答案 0 :(得分:3)

我真的建议您解析(例如,在逗号上拆分)电子邮件列表,并将每个列表放在一个单独的表中(我假设您正在谈论数据库表?)。如果你想使用电子邮件地址,最好单独存储它们,并且因为你在讨论序列化,我猜你已经解析了电子邮件,并尝试将数组或类似物存储到数据库中的单个字段中。 “正确”的规范化数据库方式是在您的模型中,您当前正在尝试保存对象,添加has_many :emails(或类似)并为每封电子邮件创建一个新的电子邮件表。

人们总是应该有一个正当理由用于在blob中存储列表类型数据,而不是使用适当的关联表。

答案 1 :(得分:1)

如果给您一个逗号分隔的电子邮件地址列表,并且当您需要使用该信息时,逗号分隔列表很有用,那么只需将其放在模型的文本列中,而不进行序列化。

如果你需要序列化列表,它不是一个数组吗?你能解释一下哈希的选择吗?