web-dev-qa-db-ja.com

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

私のデバイスモデルは何の存在も検証しません。私もそのようなことができることを知っています:

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

慣習やそれを行う正しい方法はありますか?

19
William Weckl

fetchの代わりにrequireを使用できます。

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

デバイスがパラメータに存在しない場合、上記は空のハッシュを返します

ドキュメント ここ

43
usha