2014-09-18 17 views
15

Ich verwende Rails 4 und ich weiß nicht, was der beste Weg ist, starke Parameter ohne erforderliche Parameter zu verwenden. Also, das habe ich gemacht:Rails 4 starke Parameter ohne erforderliche Parameter

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

private 

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

Mein Gerätemodell prüft die Anwesenheit von nichts. Ich weiß, dass ich so etwas wie das auch tun könnte:

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

Gibt es irgendwelche Konventionen oder der richtige Weg, das zu tun?

Antwort

35

Sie können fetch anstelle von require verwenden.

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

Above leer Hash zurückgeben, wenn das Gerät in params here

Dokumentation nicht vorhanden ist.

+1

Arbeitete wie ein Charme! Vielen Dank! –

Verwandte Themen