2

この 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 以外はすべて nil でした! 私は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 )

4

1 に答える 1

1

アプリのセキュリティのために、属性に追加する必要がありattr_accessibleます。

Rails 4 では、この gem https://github.com/rails/strong_parametersが追加されています。また

アダプティブ ペイメントを使用することをお勧めします。この投稿をご覧ください:

Ruby の Paypal アダプティブ ペイメント

于 2013-01-23T22:05:28.137 に答える