2012-01-19 7 views
0

私のRails 3.1アプリケーションでは、フィールドの生データをシリアル化せずに読み込み、シリアル化せずに書き留める必要があります。これは可能ですか?どうやって?シリアライズすることによりRails 3.1のシリアル化をスキップする方法はありますか?

私は意味

class Tenant 
    serialize :profile_template 
end 

私は明らかに、このようにフィールドにアクセスすることができます。

> t.profile_template 
=> [{:title=>"Page 1", ....}] 

私は、その後も(lucapetteの提案どおり)read_attribute_before_type_castで試してみました:

> t.read_attribute_before_type_cast(:profile_template) 
=> nil 

シンボルの代わりに文字列を使用すると、異なるが、失望のresu LT:

> t.read_attribute_before_type_cast("profile_template") 
=> [{:title=>"Page 1", ...}] 

と属性名と同じ:

> t.profile_template_before_type_cast 
=> [{:title=>"Page 1", ...}] 

念のため、私が期待していたことは次のとおりです。すべてのサンプルで

"--- 
- :title: Page 1 
...." 

、...です非常に長い構造の残りの部分。

答えて

1

はい方法があります。あなたは使用する必要があります

read_attribute_before_type_cast(:foo) 

ここで、fooはフィールドの名前です。 docはそれほど良いことではありませんが、私はThe Rails 3の方法でそれについての良い説明があることを覚えています。

EDIT

あなたはこの方法があなたのために働いていないことを言っているが、私は、上記の本からの情報の一部を再読み込み。まあ、それを行う別の方法があります。

bar = foo_before_type_cast 

ここで、fooはフィールドの名前です。フィールドの名前は_before_type_castにあらかじめ保留中の魔法のファインダーのように機能します。私は今それを試すことはできませんが、それは本当にうまくいくはずです。

+0

私はそれを試みましたが、それは私のためにゼロを返します。私は質問を修正します。 – Pablo

+0

私は答えを更新しました。残念ながら今は試してみることはできません。もし、助けがあれば、今晩テストをすることができます。 – lucapette

+0

私はそれを試しました...それは、文字列の代わりに非直列化バージョンを提供します。私はそれに応じて答えを更新します。これを見ていただきありがとうございます:) – Pablo

関連する問題