Rails 4 strong parameters without required parameters

11,297

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.

Share:
11,297

Related videos on Youtube

William Weckl
Author by

William Weckl

Updated on June 06, 2022

Comments

  • William Weckl
    William Weckl almost 2 years

    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?

  • William Weckl
    William Weckl over 9 years
    Worked like a charm! Thank you!
  • alexventuraio
    alexventuraio over 3 years
    @usha is there any problem or security issue leaving it as params.permit(:name, :last_name, :age) ?