2011-06-24 14 views
0

私は2モデル:ReportSinglePageがあります。 ユーザーはPDFレポートをアップロードできます。このレポートの各ページはイメージに変換され、独自のsingle_page-instanceに保存されます。モデル内にモデルを作成

現在、私のコントローラにレポートを保存しています。保存が成功すると、コントローラ内からもこのレポートのsingle_pagesが作成されます。

このようなロジックはモデル自体で処理する必要があるため、私はこのアプローチが嫌いです。別の問題は、レポートのsingle_pagesを作成できるかどうかに関係なく、レポートが作成されることです。もちろんコントローラーをつかむこともできますが、これは悪い習慣と考えています。私が実際に達成したい何

これです:

  1. ユーザーが
  2. レポートを分割取得し、各単一ページは、各画像がに保存された画像
  3. になって、レポートのPDFをアップロード独自のsingle_page-instance
    • 注:single_pagesはすべて1つのメソッド内で作成され、1つ以上のページを作成できない場合はfalseを返します。
  4. すべてのsingle_pagesが作成された場合のみ、レポートが保存されます。

Report-Model内のinitializeメソッドをオーバーライドしようとしましたが、この依存関係が機能しなくなっています。 single_pagesの処理内容に関係なく、レポートモデル自体にエラーがあるか、または保存されます。

ご協力いただければ幸いです。

おかげで、マンディ

+2

'before_create'や' before_save'のようなコールバックを 'Report'で試したことがありますか? – theIV

+0

ああ、これはほとんど恥ずかしいです:-) 私はこのコールバック方法を試しましたが、別の問題がありました。私の方法では、single_pagesを作成しています。 私は今それを再試行し、それは魅力のように動作します。この回答を適切に投稿すると、得点が得られます;-) – klaffenboeck

+0

シングルページインスタンスはどのように保存されませんか?検証に失敗するか、ページをイメージに変換するプロセスが失敗していますか? – Olives

答えて

1

Reportに、このようbefore_createbefore_saveとして、あなたが利用できるコールバックのいずれかを試してみましたか?

+0

再び正しい方向に私を指摘してくれてありがとう:-) – klaffenboeck

1

transactionにすべての保存をラップすることができます。

また、あなたはそれについて言及していませんでしたが、あなたはレポートとシングルページの間に親子関係があると思いますか?その場合、ページをビルドして(保存せずに)レポートを保存すると、レールは従属する子を保存しようとし、子が保存に失敗した場合は親を保存しません。

+0

ありがとうアドバイス。今のところ、before_saveコールバックはかなりうれしいですが、両方のソリューションがRailsのように見えることは認めなければなりません。私は将来のソリューションのためにそれを確かめます。 ベストアンサー、Mandi – klaffenboeck

関連する問題