Я пытаюсь создать несколько сообщений об отсутствии, отправив сообщение:
Parameters: {"absences"=>[{"user_id"=>1, "lesson_id"=>25,
"excused"=>true}, {"user_id"=>2, "lesson_id"=>25, "excused"=>true}]}
Однако я не могу внести этот список в белый список в контроллере. Я попытался следовать решению из " Как использовать строгие параметры с массивом объектов в Rails ".
В моем случае:
def absence_params
params.permit(absences: [:user_id, :lesson_id, :excused])
end
Я получаю
ActiveModel::UnknownAttributeError (unknown attribute 'absences' for Absence.):
Тогда я попытался:
Parameters: {"absence"=>[{"user_id"=>1, "lesson_id"=>25,
"excused"=>true}, {"user_id"=>2, "lesson_id"=>25, "excused"=>true}]}
def absence_params
params.permit(:absence, array: [:user_id, :lesson_id, :excused])
end
и получил:
Unpermitted parameters: :absence, :format
---- Решено ----
- гем 'cancancan' не разрешал мне создавать с использованием массива.
- Если у вас есть проблема с разрешением массива в сильных параметрах, попробуйте
params.require(:absences).map do |p|
p.permit(:user_id, :lesson_id, :excused)
end