Перенаправление с помощью Raise ActiveRecord :: Rollback? - PullRequest
0 голосов
/ 14 декабря 2011

Я не могу правильно перенаправить, он продолжает выдавать меня ActiveRecord::RecordInvalid, но он должен перенаправить :back на исходную страницу.

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

Как мне заставить его перенаправить?

1 Ответ

4 голосов
/ 15 декабря 2011

Если вы хотите перехватить исключение 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

Я бы написал эту функцию примерно так, как указано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...