【发布时间】:2015-11-19 19:34:07
【问题描述】:
我在自定义控制器中遇到了强参数问题。我了解如何在新操作或更新操作中使用强参数。但是,我似乎无法确定在我的自定义操作中这是否是对 params[] 哈希的不安全使用。
我的视图重定向到带有订单 ID 和操作编号的控制器:
link_to 'Confirm', confirmpayment_confirm_path(order: order, operacion: order.operacion), :data => { confirm: 'Are you sure?' }
我的confirmpayment控制器如下:
class ConfirmpaymentController < ApplicationController
before_action :authenticate_user!
def lookup
authorize! :lookup, :confirmpayment
@orders=Order.where(:status => 'PENDING')
end
def confirm
authorize! :confirm, :confirmpayment
@order=Order.find(params[:order])
@order.payment_id = params[:operacion]
@order.confirm_payment_date = DateTime.now()
@order.save
end
def order_params
params.require(:order).permit(:order, :operacion)
end
end
问题是:
我没有在确认操作中的任何地方使用order_params,因为这不是新订单。我正在使用参数来找到正确的顺序并确认它。这安全吗?还是我错过了什么?
【问题讨论】:
-
payment_id只是外部提供者的 ID 还是指向数据库中记录的外键。例如。到Payments表? -
就是这样。指向数据库中记录的外键。
标签: ruby-on-rails ruby-on-rails-4 activerecord strong-parameters