Рельсы, передающие строгие параметры строки или хэша

#ruby-on-rails #strong-parameters

#ruby-on-rails #strong-параметры

Вопрос:

Могу ли я указать с помощью строгих параметров либо строку, либо хэш

У меня есть конечная точка, для которой полезная нагрузка может быть либо:

 card: { number: "4111****", exp_year: "12"}
  

или

 card: "some_encrypted_card"
  

в строгих параметрах

Если я использую permit(:card) вариант 1, не работает, если я использую require(:card).permit(:number, :exp_year) вариант 2, не работает

Есть предложения?

Ответ №1:

Вы можете запросить параметр card, чтобы узнать, какой тип он возвращает:

 def card_params
  if params[:card].is_a? String
    params.permit(:card)
  else
    params.require(:card).permit(:number, :exp_year)
  end
end