【问题标题】:Rails 4 strong parameters without required parametersRails 4强参数无必填参数
【发布时间】:2014-09-18 13:47:57
【问题描述】:

我正在使用 Rails 4,但我不知道在没有必需参数的情况下使用强参数的最佳方法是什么。所以,这就是我所做的:

def create
device = Device.new(device_params)
.................
end

private

def device_params
  if params[:device]
    params.require(:device).permit(:notification_token)
  else
    {}
  end
end

我的设备型号无法验证是否存在任何内容。 我知道我也可以这样做:

device = Device.new
device.notification_token = params[:device][:notification_token] if params[:device] && params[:device][:notification_token]

是否有任何约定或正确的方法来做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 strong-parameters


    【解决方案1】:

    您可以使用fetch 代替require

    def device_params
       params.fetch(:device, {}).permit(:notification_token)
    end
    

    当参数中不存在设备时,上面将返回空哈希

    文档here

    【讨论】:

    • 工作就像一个魅力!谢谢!
    • @usha 是否有任何问题或安全问题将其保留为params.permit(:name, :last_name, :age)
    猜你喜欢
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多