Ho una classe Upload
ActiveModel che ha un attributo: filename
. Dal momento che non c'è un solo attributo, lasciando vuoto il campo nel modulo finisce per sollevare un errore quando si utilizza il seguente codice nel mio controller:Il modo migliore per gestire i parametri richiesti mancanti con StrongParameters?
class UploadsController < ApplicationController
def create
@upload = Upload.new(upload_params)
# ...
end
private
def upload_params
params.require(:upload).permit(:filename)
end
end
La soluzione migliore che è venuta in mente è quello di rescue
nel metodo upload_params
, ad esempio:
def upload_params
params.require(:upload).permit(:filename) rescue ActionController::Parameters.new
end
In alternativa, suppongo che avrei potuto aggiungere un campo nascosto per garantire che il campo filename
è sempre impostato su qualcosa di non importa cosa, ad esempio:
= simple_form_for upload do |f|
= f.input :filename, as: :hidden, input_html: { value: '' }
= f.input :filename, as: :file
= f.submit 'Upload'
C'è un modo migliore di gestire l'utente non compilando nessuno degli attributi del modulo?