У меня есть некоторые проблемы с пониманием функции "params" в RoR.
давайте предположим, что у меня есть пользовательская модель.
следующий код apperars в контроллере пользователей, и его функция заключается в обработке запроса POST 'destroy'. Функция «current_user» возвращает текущего зарегистрированного пользователя (я рекомендую экземпляр класса User). сравнивая функцию «current_user == params [: id]» «уничтожить», проверяет, пытается ли пользователь удалить себя
def destroy
if current_user == params[:id]
flash[:error] = "you cannot delete yourself!"
else
User.find(params[:id]).destroy
flash[:success] = "user deleted"
end
redirect_to(users_path)
end
Так что проблема в том, что код чанка работает хорошо. и я не очень понимаю, почему. Мой опыт работы - 3-летний опыт программирования на C ++ / C # в университете, поэтому я предположил, что такое сравнение должно вызывать приведение типов. В этом случае я думаю, что это будет User obj ---> string obj (ИЛИ string -> User ??? !!!!).
Хотя у меня много вопросов о том, как Rails удается сравнивать класс User и класс string, я могу с этим справиться.
Но что если я захочу оптимизировать эту задачу и явно сравнить только идентификаторы: один хранится в params [: id] в виде строки (??), а другой - в хеше current_user ["id"].
первый имеет строковый тип, а второй целочисленный, я не прав? поскольку "current_user [" id "] == params [: id] .to_i" вызывает ошибку, это означает, что params [: id] возвращает экземпляр класса User o_O
спасибо!