Отладка создания! метод внутри контроллера создать метод - PullRequest
0 голосов
/ 10 ноября 2011

Приложение рельсы 3 использует создание!Метод внутри создания контроллера.

Иногда он работает, а иногда нет. Он не всегда согласован с одним и тем же сценарием использования, однако я проверил и перепроверил и не могу понять, почему он не работает.

Создавай!метод молча завершается неудачей, в логах проблемы нет указания.Как я могу сделать создание!метод более подробный?

Код:

class NotificationPaiementsController < ApplicationController
  protect_from_forgery :except =>[:create]
  skip_before_filter :authorize, :only => [:create]

  def create
    logger.debug "params is #{params}"
    logger.debug "invoice is #{params[:invoice]}"
    logger.debug "payment_status is #{params[:payment_status]}"

    logger.debug "txn_id is #{params[:txn_id]}"

    @notification_paiement = NotificationPaiement.create!(:params => params,
                                              :cart_id => params[:invoice],
                                              :status=> params[:payment_status],
                                              :transaction_id => params[:txn_id])

    logger.debug "notification_paiement is #{@notification_paiement}"
    render :nothing=>true
  end
end

РЕДАКТИРОВАТЬ: Спасибо за ваши ответы, было бы быстрее поймать исключение, но мне удалось определить проблему с помощью новой и сохранить консоль,При сохранении у меня была ошибка о кодировке UTF-8: ArgumentError: неверная последовательность байтов в UTF-8.Paypal изменял «molière» в «moli \ xE8re», и ошибка никогда не отображалась.

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Конструктор create! вызывает исключение в случае сбоя:

Создает объект точно так же, как Base.create, но вызывает save! вместо save, поэтому возникает исключение, если запись недействительна.

Итак, если вы собираетесь использовать create!, вам следует включить его в обработку исключений:

begin
  @notification_paiement = NotificationPaiement.create!(...
rescue ActiveRecord::RecordInvalid => e
  # Deal with your errors.
end
1 голос
/ 10 ноября 2011

Вы можете временно удалить глушители обратной трассировки в config / initializers / backtrace_silencers.rb в случае проглатывания информации об исключении.

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