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”,错误从未显示过。
答案 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