我使用此RailsCast创建购物车系统的一部分http://railscasts.com/episodes/142-paypal-notifications
有一段代码由PayPal调用以通知。
def create
PaymentNotification.create!(:params => params, :cart_id => params[:invoice], :status => params[:payment_status], :transaction_id => params[:txn_id])
render :nothing => true
end
我在Heroku上尝试过,没有警告也没有错误。 PaymentNotification对象在数据库中成功创建 - 但除了id之外,一切都是零!我打开了heroku控制台并尝试了:
irb(main):002:0> PaymentNotification.create!(:cart_id => "2", :status => "Complete", :transaction_id => "XYZXYZXYZXYZXYZ")
< => "2", :status => "Complete", :transaction_id => "XYZXYZXYZXYZXYZ")
这给了我这个,
WARNING: Can't mass-assign protected attributes: cart_id, status, transaction_id
为什么Heroku日志中没有出现此警告?为什么它成功创建(是因为它只是一个警告,而不是错误?)
我可以在这些事情上使用attr_accessible吗?无论如何都必须验证通知(https://www.paypal.com/cgi-bin/webscr?cmd=p/acc/ipn-info-outside)
答案 0 :(得分:1)
对于应用安全性,您必须在属性中添加attr_accessible
。
在轨道4上添加了此宝石https://github.com/rails/strong_parameters。还
我建议您使用自适应付款。你可以看一下这篇文章: