Я создаю небольшое веб-приложение, которое позволяет пользователям перечислять свои цели.Я хочу, чтобы пользователи могли редактировать только свой собственный контент.Я уже получил функцию проверки подлинности before_filter, которая проверяет, вошел ли кто-то в систему, но не проверяет, является ли пользователь создателем контента.Я попытался создать второй before_filter с именем correct_user, который имеет следующий код:
def correct_user
@user = User.find(params[:id])
redirect_to(user_path(current_user)) unless current_user?(@user)
end
Кроме того, здесь вывод сервера от выполнения запроса get на редактирование моего собственного контента
Started GET "/goals/31/edit" for 127.0.0.1 at 2011-05-18 15:22:38 -0400
Processing by GoalsController#edit as HTML
Parameters: {"id"=>"31"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 101) LIMIT 1
User Load (0.2ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 31) LIMIT 1
Redirected to http://localhost:3000/users/101 Completed 302 Found in 49ms
Completed 302 Found in 49ms
Для ясности, user_id, который я использую, равен 101, а goal_id, который я пытаюсь редактировать, равен 31. Может ли кто-нибудь объяснить, что именно происходит?
Кроме того, я знаю, что вы можете решить эту проблемуиспользуя драгоценный камень под названием CanCan (поскольку на этот вопрос был дан аналогичный ответ), но есть ли способ сделать это без использования драгоценного камня?Кажется, моя простая маленькая функция должна работать, но кто-то может объяснить, почему она не работает?