Rails 4 strong parameters without required parameters

William Weckl picture William Weckl · Sep 18, 2014 · Viewed 10.5k times · Source

I'm using Rails 4 and I don't know what is the best way to use strong parameters without required parameters. So, that's what I did:

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

private

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

My device model does not validate presence of anything. I know I could do something like that too:

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

Is there any conventions or the right way to do that?

Answer

usha picture usha · Sep 18, 2014

You can use fetch instead of require.

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

Above will return empty hash when device is not present in params

Documentation here.