2011-12-14 33 views
0

私は正しくリダイレ​​クトできません。それはActiveRecord::RecordInvalidを投げつけ続けますが、元のページに:backをリダイレクトする必要があります。Raise ActiveRecord :: Rollbackを使用したリダイレクト?

def create_multiple 
    Product.transaction do 
    begin 
     @products = current_user.products.create!(params[:products].map { |_k, p| p.merge params[:product] }) 
     redirect_to :back, :notice => "Success!" 
     rescue ActiveRecord::Rollback 
     redirect_to :back, :notice => "An error occured, please try again." 
     end 
    end 
    end 
end 

どのようにリダイレクトするのですか?

答えて

4

ActiveRecord :: RecordInvalid例外をキャッチしたい場合は、なぜActiveRecord :: Rollbackではなくレスキューレスを救済していないのですか?

def create_multiple 
    Product.transaction do 
    @products = current_user.products.create! ... 
    end 
    notice = "Success!" 
rescue ActiveRecord::RecordInvalid 
    notice = "An error occurred, please try again" 
ensure 
    redirect_to :back, :notice => notice 
end 

私は上記のような何かを書くでしょう。

+0

それは素晴らしいです!私はまだRailsに新しいので、私は確信していませんでした。取引書類に行くだけです。トランザクションを使用するときに 'ActiveRecord :: Rollback'を使うこともできます:http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html。とにかく、ありがとう。 – LearningRoR

関連する問題