3

これが答えられたなら許してください、私は同じような質問をしばらく経験しました、しかしそれらのどれも私が探しているものを達成するようには見えません。

Contact連絡先の情報を保存するという名前のモデルがあります。カスタムフィールドを追加する機能を追加したいと思います。つまり、ユーザーはモデル上のシリアル化されたオブジェクトに格納されているkeyとを格納できます。valueキーはカスタムであるため、attrライターを使用して、モデル自体にあるかのように値にアクセスすることはできません。

これをハッシュとしてシリアル化しようとしましたが、データを送信するときにフォーム入力を使用するのが問題です。このため、[{key:'foo'、value:'bar'}]でハッシュの配列を使い始めましたが、フォームを編集すると古い値が表示されず、最善の方法が完全にはわかりません。これに近づくために。私はこれを達成しようとしていましたfields_for :extra_values

4

1 に答える 1

4

モデルのシリアル化されたフィールドにデータを格納することには、いくつかの小さな問題があります。まず、ActiveRecordはシリアル化されたフィールドを常にダーティと見なします。その結果、データベース内のレコードは、saveが呼び出されるたびに常に更新されます。第二に、シリアル化されたフィールドに保存されたデータを検索することは困難です。したがって、これらの値を格納するために別のモデルExtraValueを追加し、Contactを作成することをお勧めしますhas_many :extra_values。次に、ネストされたフォームを利用してフォームを作成できます。

于 2012-10-24T08:02:26.663 に答える