Проблема заключается в интерполяции, которую вы делаете для создания оператора.
".. (1, #{Student.get_level_name(1)});"
Несмотря на то, что Brakeman не знает, откуда берется это значение, если вы передадите какое-либо значение, вы уязвимы дляSQLi.
Вот почему вы должны использовать ActiveRecord для обработки вставок базы данных.Он позволяет передавать значения для записей и имеет дело с привязками и очисткой:
INSERT INTO "students" ("student_id", "created_at", "updated_at")
VALUES ($1, $2, $3)
RETURNING "id"
[["student_id", "1"], ["created_at", "2019-09-27 07:06:57.198752"], ["updated_at", "2019-09-27 07:06:57.198752"]]
Там вы можете видеть ($1, $2, $3)
соответственно как значения "student_id", "creation_at", "updated_at", которые не передаются в форме RAW на ваш запрос (временные метки генерируются автоматически, если вы их добавили).
Итак, для вставки:
Student.create(student_id: 1, level: Student.get_level_name(1))