Rails 4强参数,无需参数

Wil*_*ckl 19 ruby ruby-on-rails strong-parameters ruby-on-rails-4

我正在使用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
Run Code Online (Sandbox Code Playgroud)

我的设备型号不验证任何内容.我知道我也可以这样做:

device = Device.new
device.notification_token = params[:device][:notification_token] if params[:device] && params[:device][:notification_token]
Run Code Online (Sandbox Code Playgroud)

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

ush*_*sha 44

你可以用fetch而不是require.

def device_params
   params.fetch(:device, {}).permit(:notification_token)
end
Run Code Online (Sandbox Code Playgroud)

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

文档在这里.

  • @usha 是否有任何问题或安全问题将其保留为 `params.permit(:name, :last_name, :age)` ? (2认同)