Одна вещь, которую я заметил при работе с вложенными маршрутами ресурсов в Rails, заключается в том, что технически возможно, чтобы пользователь мог посетить маршрут, где существует дочерний ресурс (и поэтому отображается правильно), но идентификатор для родительского ресурса представляет объект, который фактически не связан с дочерним ресурсом.Исправление недопустимых маршрутов ресурсов в Rails
Например, на маршруте users/:user_id/post/:id
пользователь может ввести маршрут, где :user_id
представляет пользователя, который не сделал сообщение, соответствующее :id
.
Что было бы лучшим способом исправить это, чтобы, если пользователь посещает неверный URL-адрес, сервер перенаправляет пользователя на правильный URL-адрес?
Я уже поставил код в своих контроллерах, чтобы справиться с этим, но неудобно проверять путь в каждом действии контроллера, а затем перенаправлять пользователя на соответствующий URL-адрес, тем более, что URL-адреса помощников различны для каждого действие.
(edit_user_post_path(@user, @post)
, new_user_post_path(@user, @post)
)
Там должен быть лучше, не так ли?
А, я вижу. Если я ищу почту только в пределах сообщений пользователя, у меня не будет этой проблемы. До этого момента я искал должности отдельно. Например. 'Posts.find (PARAMS [ID]:') – Ajedi32