调试创建!控制器内部的方法创建方法

时间:2011-11-10 08:22:50

标签: ruby-on-rails-3 logging

rails 3 appis正在使用创建!在创建控制器内部的方法。

有时候它会起作用,有时它却不起作用。它总是以相同的用例一致地失败,但是我已经检查并重新检查,并且无法理解它为什么会失败。

创造!方法无声地失败,问题日志上没有任何指示。我怎样才能创作!更详细的方法?

代码:

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

编辑: 对于你的答案,你可以更快地捕获异常,但我设法使用new来识别问题并通过控制台进行保存。在保存时,我有一个关于UTF-8编码的错误:ArgumentError:UTF-8中的无效字节序列。  Paypal正在改变“moli \ xE8re”中的“molière”,错误从未显示过。

2 个答案:

答案 0 :(得分:1)

如果吞下异常信息,您可以暂时删除config / initializers / backtrace_silencers.rb中的回溯消音器。

答案 1 :(得分:1)

create! constructor如果失败则会引发异常:

  

创建一个与Base.create类似的对象,但调用save!而不是save,因此如果记录无效,则会引发异常。

因此,如果您要使用create!,则应将其包装在异常处理中:

begin
  @notification_paiement = NotificationPaiement.create!(...
rescue ActiveRecord::RecordInvalid => e
  # Deal with your errors.
end