9

私はハッシュを持っています:

h = {
    "revision"=>7,         
    "rev"=>"708a4bd5b", 
    "thumb_exists"=>false, 
    "bytes"=>246000,     
    "modified"=>"Sun, 01 Jul 2012 17:09:15 +0000", 
    "client_mtime"=>"Sun, 01 Jul 2012 17:09:15     +0000", 
    "path"=>"/Getting Started.pdf", 
    "is_dir"=>false,       
    "icon"=>"page_white_acrobat", 
    "root"=>"dropbox",     
    "mime_type"=>"application/pdf", 
    "size"=>"240.2 KB"
}

次のコマンドを使用してデータベースに保存したいと思います。h.to_s 次に、データベースからコンテンツを取得し、ハッシュとして操作したいと思います。

s = MyModel[:field_which_contains_hash_string]

コンテンツをロードしようとしましYAML::load sたが、エラーが発生しました:

Psych::SyntaxError: (<unknown>): found unexpected ':' while scanning a plain scalar at line 1 column 96

時間文字列のコロンが原因だと思います。では、ハッシュを保持して再度取得する最善の方法は何でしょうか?

助けていただければ幸いです。ベスト、フィリップ

4

1 に答える 1

13

モデルにテキスト型の列を作成します。次に、モデルファイルで

class MyModel < ActiveRecord::Base
    serialize :column_name, Hash
end

次に、次を使用してアクセスします。

my_model = MyModel.new
my_model.column_name[:key] = value
my_model.column_name[:key]

ハッシュは、YAML を使用して列にシリアル化されます

http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Serialization/ClassMethods.html#method-i-serialize

于 2012-07-30T21:41:15.377 に答える