2012-01-07 11 views
-1

新しく作成されたオブジェクトにハッシュ(ハッシュとしてシリアライズされた)を渡すときに問題が発生しています。値はyaml形式に変換されます。ruby​​ onrのオブジェクト内のpassignハッシュ値に

は、次のことを考えてみましょう:

Model ComputerUser: 

... 
serialize preferences 
'#in the database I see the following "{0=>{color:red format:html}}" 

    .... 

    @computer_user.registrations.build(:user_pref => :preferences}.save 
    @computer_user.user_pref; 

「#この上記の文は、YAMLフォーマットでデータをこぼし、それはそれはデシベルに永続取得する方法です。

ここで、レールコンソールから次のようにすると、同じ問題は発生しません。つまり、ハッシュはハッシュとして保存され、yaml形式には変換されません。

=>{0=>{color:red format:html}} 

が、私は、ソース内の属性だけでなく、ターゲットのシリアル化を使用していることに注意してください:私は、新しいオブジェクトの列の値を調べるときは、次の参照してください。物事はコンソールからは動作するように見えますが、コントローラからはちょっと注意してください!何が起こっているのでしょうか?なぜ問題はWebアプリケーションでのみ発生し、コンソールでは発生しません。

+0

コードが転記されると、いくつかの構文エラーが発生します。投稿を編集して実際のモデルコードをコピーして貼り付け、より慎重にフォーマットしてください。それを済ませたら、私たちがあなたを助けるのがずっと簡単になります。 –

+1

@Jordan - 誰かがこの問題を知り、助けてくれるかもしれないことを希望して、昨夜遅くに詳細を掲載しました。しかし、はい、私はサンプルの記述が他の読者には役に立たなかったかもしれないと認識しています。撮影ポイント。私は先に進んでサンプルをまとめました。そして解決策も見つけました。私はそれを投稿します。ありがとう。 – Tabrez

答えて

0

問題は、インスタンス変数を割り当てに使用していないことでした。

あなたは両方のクラスで宣言された「シリアル化、ハッシュ」を持っている場合、これはあなたが親から子オブジェクトを構築するために必要な方法です:

@computer_user.registrations.build(:user_prefs => @computer_user.preferences).save 

魅力のように動作すること。