我可以在Ruby on Rails中将attr_accessible用于PayPal IPN吗?

时间:2013-01-23 21:52:46

标签: ruby-on-rails paypal

我使用此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

1 个答案:

答案 0 :(得分:1)

对于应用安全性,您必须在属性中添加attr_accessible

在轨道4上添加了此宝石https://github.com/rails/strong_parameters。还

我建议您使用自适应付款。你可以看一下这篇文章:

Paypal Adaptive Payment for Ruby