Je souhaite créer un objet avec des paramètres forts pouvant accepter les clés de hachage dynamiques.Comment autoriser le hachage avec les valeurs * key =>?
Ceci est mon code,
Quiz.create(quiz_params)
def quiz_params
params.require(:quiz).permit(:user_id, :percent, :grade, questions: {})
end
données qui est passé dans ressemblerait à quelque chose comme ça.
// the keys that get passed into question is always different
quiz: {
user_id: 1,
percent: 80,
grade: "B",
questions: {
"12": "24",
"1": "12",
"4": "3",
"5": "22"
}
}
Actuellement, lorsque j'essaie de créer un quiz, le hash des questions est vide.
(params [: quiz] || {}) [: questions] .keys –
Pensez-vous que vous pouvez expliquer ce que cela fait exactement? Son genre de difficile à comprendre –
Voir https://github.com/rails/rails/issues/9454 - malheureusement, il n'y a pas de moyen facile de dire "permettre à cette clé de contenir quoi que ce soit". La réponse de @ slowjack2k le fait manuellement: littéralement, vous permettez à la clé ': questions' de contenir une liste spécifique de clés, ce que vous obtenez en lui demandant toutes les clés qu'elle possède. Cela fonctionnera pour votre cas d'exemple, mais n'autorisera malheureusement pas l'imbrication arbitraire. – gmcnaughton