我想序列化文本列中的任何对象。
通过API,我得到了参数:
params[:attachments] -- this can be 0 or 1 or 3, or 100+ etc...
params[:attachment1]...params[:attachment2] ... params[:attachmentN]
那么如何在序列化对象中存储X#附件?
mailThing = MailThing.create(:attachments => myAttachmentsSerizliedIfANY)
我正在尝试:
@myAttachmentsSerizliedIfANY = nil
i = 0
attachmentCount = params[:attachments].to_i
while i < attachmentCount do
@myAttachmentsSerizliedIfANY << params[:attachment + i ]
i += 1
end
有关如何使其正常工作的任何建议?感谢
答案 0 :(得分:4)
好的,所以我看了一些你的其他问题,我想我可能会有一些适合你的东西。对于这个工作,你需要在数据库中的列(我称之为attachment_storage
),您序列化后,他们就可以存储这些附件。
基本上,您希望首先将附件放入数组中,然后将其序列化为字符串,以便将其存储到数据库中。
这是完成这项工作的一些代码。
attachment_storage = []
(1..params[:attachments].to_i).each do |attachment_num|
attachment_storage << params["attachment#{attachment_num}".to_sym]
end
下面我们使用了串和to_sym把它变成像一个符号构建符号params哈希表:attachment1
,:attachment2
,等等。
然后要放置在数据库中,所以可以存储它作为在[ActiveRecord的文档]注意到[1]下的部分“保存阵列,散列,并在文本列其它非可映射对象”。
为了使系列化工作,你需要添加serialize :attachment_storage
到你的模型,然后保存它,你会如上分配给它,就像任何其他参数。然后保存您的模型,它将为您序列化。