現在の問題を解決するための最良の方法を今探しています。製品と写真の2つのモデルがあります。写真はhas_manyを介して製品に関連付けられます。ユーザーが新しい製品を作成するとき、実際の製品がデータベースに保存される前に、ネストされたフォーム(carrierwave、jquery)を使用して写真を追加することもできます。製品はまだ存在しないため、正しい関連付けで写真をデータベースに保存するための最良の方法を探しています。
いくつかの方法が頭に浮かびました。
1)ユーザーが「新製品」を押すとすぐに適切なIDで製品をデータベースに保存し、ユーザーが「キャンセル」を押した場合は後で再度削除します。このようにして、検証を少し混乱させ、代わりにクライアント側の検証を行う必要があります。製品の作成中にユーザーがブラウザウィンドウを閉じると、問題が発生する可能性があります。製品はデータベースに残ります。
2)データベースに保存し、奇妙なIDやis_tempフィールドなどを使用して、なんらかの方法でフラグを付けます。これにより、ユーザーがログインするたびにデータベースをクリーンアップできます。「Cance」はすぐに削除します。 (および関連するすべての写真)。
3)メモリに一時IDを作成し、まだ製品を保存しないでください。この一時IDに関連付けられていても写真を保存できます。ユーザーが最終的に保存を押すと、product_idを新しい実際の製品IDに変更します。
これまでのところ、Solution 2はそれを行うための最良かつ最もクリーンな方法のように見えます。これは、RyanBatesのGuestRecord Railscastに似ていますが、ここで何かが欠けている可能性があり、はるかに簡単な方法があります。他の解決策は高く評価されています。
どうもありがとう!