以这种方式发送参数以在控制器中创建动作是否安全/可接受?有没有潜在的问题?

<%= link_to "Acceptance", acceptances_path(acceptance: {favor_id: @favor.id, user_id: current_user.id}), method: :post %>


然后在控制器中

class AcceptancesController < ApplicationController

  def create
    @acceptance = Acceptance.new(acceptance_params)

    if @acceptance.save
      redirect_to favors_path
    else
      render :template => 'favors/index'
    end
  end

  private

  def acceptance_params
    params.require(:acceptance).permit(:favor_id, :user_id)
  end
end


谢谢您的宝贵时间!

最佳答案

您能做的最好的(也是最安全的)是在控制器中分配这些ID。

由于您可以访问@favorcurrent_user对象,因此最好这样做:

def create
  @acceptance = Acceptance.new(acceptance_params)
  @acceptance.favor_id = @favor.id
  @acceptance.user_id = current_user.id
  # code omitted
end

10-08 04:24