我想序列化文本列中的任何对象。
通过 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
关于如何让它发挥作用有什么建议吗?谢谢
好的,我看了你的其他一些问题,我想我可能有一些对你有用的东西。为此,您需要在数据库中有一列(我将其称为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
, etc.
然后您想要将其放入数据库中,以便您可以按照“在文本列中保存数组、哈希和其他不可映射对象”部分下的 [ActiveRecord 文档][1] 中所述存储它。
为了使序列化工作,您需要添加serialize :attachment_storage
到您的模型,然后存储它,您可以像上面的任何其他参数一样分配它。然后保存您的模型,它将为您序列化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)