0

after_save Rails コールバックを理解するのに問題があります。私のモデルからのスニペットがあります:

  after_save :log_creation

  private 

    def log_creation
      logger.info "RECEIVED => #{ self.name } - #{ self.value } - #{ self.id }"
      path_to_url = url_for({ :host => "localhost:8080", :action=>"show", :controller=>"testing", :format =>"pdf", :id => self })
      logger.info path_to_url
      file = open(path_to_url, "r").read
      logger.info file
    end

開発ログで、最初の 2 つの logger.info について予想される情報を取得します。3 つ目は、404 例外 (ActiveRecord::RecordNotFound) を受け取るため、わかりません。

それで、私は何を間違っていますか?

PDF 生成は (PDFkit を使用して) 問題なく動作します。after_save 行にコメントを付けて URL にアクセスしようとすると問題ありませんが、after_save でアクセスしようとすると期待どおりに動作しません。

以上がPDFを添付したメール(メーラー付き)の送信です。PDFを(制御されたものを介して)ダウンロードしてから送信します。

4

1 に答える 1

1

問題はトランザクションに関係していると思います。新しいモデルは保存されましたが、トランザクションはまだ終了していません。after_commitの代わりに試してくださいafter_save。すべての異なるコールバックの詳細については、コールバックに関するドキュメントを参照してください。

于 2011-10-11T15:31:21.000 に答える