2011-02-01 3 views
2

テキスト列内のオブジェクトをシリアル化する必要があります。 API経由N個のレコードのシリアル化されたオブジェクトを構築するレール

は、私がのparamsを取得:

params[:attachments] -- this can be 0 or 1 or 3, or 100+ etc... 
params[:attachment1]...params[:attachment2] ... params[:attachmentN] 

は、どのように私は、シリアライズされたオブジェクトの添付ファイルのX番号を格納していますか?

mailThing = MailThing.create(:添付ファイル=> myAttachmentsSerizliedIfANY)

私がやろうとしている:この作業を取得する方法について

@myAttachmentsSerizliedIfANY = nil 

i = 0 
attachmentCount = params[:attachments].to_i 
while i < attachmentCount do 

    @myAttachmentsSerizliedIfANY << params[:attachment + i ] 

    i += 1 
end 

任意の提案ですか?おかげで、

+0

もう少し情報を提供できますか?どのタイプのデータベース列がありますか?どの種類のデータが添付ファイルにありますか? – jamuraa

+0

どの種類の電子メール添付ファイルでもかまいません。データベースの列にすることができます何でもすることができます...テキストまたはBLOB – AnApprentice

答えて

4

さて、あなたの他の質問のいくつかを見て、私はあなたのために動作するものがあるかもしれないと思う。これを動作させるには、データベースに列を持たなければなりません(私はattachment_storageと呼ぶでしょう)、これらの添付ファイルをシリアル化した後に保存することができます。

基本的に、アタッチメントを最初に配列に入れ、それをデータベースに格納できるように文字列にシリアル化したいとします。

これを行うにはいくつかのコードがあります。

attachment_storage = [] 
(1..params[:attachments].to_i).each do |attachment_num| 
    attachment_storage << params["attachment#{attachment_num}".to_sym] 
end 

ここで私たちは、その後、あなたは、データベースに入れたいなど、:attachment1:attachment2のようなシンボルにそれを回すために、文字列とto_symを使用して

をparamsハッシュのためのシンボルを構築しています[ActiveRecordドキュメンテーション] [1]の「配列、ハッシュ、およびその他のマッピング不可能なオブジェクトをテキスト列に保存する」の節に記載されているように格納することができます。

シリアル化を機能させるには、モデルにserialize :attachment_storageを追加し、それを上のように他のパラメータと同じように割り当てることが必要です。その後、モデルを保存すると、そのモデルがシリアル化されます。

+0

ありがとう!私はこれを試して待つことができません。今私はまた、メールオブジェクトの残りの部分をdbに取得する方法を理解しようとしています。ここで新しい質問:http://stackoverflow.com/questions/4870184/rails-storing-a-actionmail-mail-new-object-in-the-database私はそれに私はこれにジャンプするために解決した後。ありがとう – AnApprentice

+0

列の種類はどのようにする必要があります – AnApprentice

+0

添付ファイルの記憶域の列の種類 – AnApprentice

関連する問題