Это мой маршрут:
scope ":username" do
resources :feedbacks
end
Поэтому, когда я перехожу к mydomain.com/test/feedbacks/10
, он показывает правильный feedback
с id=10
, который принадлежит username=test
.
Но, если я перейду к mydomain.com/test2/feedbacks/10
, он покажет мне ту же обратную связь с id=10
, которая НЕ относится к username=test2
.
Как я могу запретить этому происходить?
Я использую гем Vanity
, чтобы дать мне имя пользователя в URL, вот как выглядит этот маршрут:
controller :vanities do
match ':vname' => :show, :via => :get, :constraints => {:vname => /[A-Za-z0-9\-\+\@]+/}
end
Редактировать 1:
То есть, для ясности, когда я иду к mydomain.com/test/feedbacks/10
и /test2/feedbacks/10
, он показывает мне то же самое представление для той же самой записи (в этом случае последняя версия будет неправильной, потому что она должна говорить мне, что такой записи не существует, но это не так. Она просто отображает правильную запись для test/feedbacks/10
).
Редактировать 2:
Вот журналы обоих запросов:
Правильный запрос
Started GET "/test-3/feedbacks/7" for 127.0.0.1 at 2011-09-14 02:48:15 -0500
Processing by FeedbacksController#show as HTML
Parameters: {"username"=>"test-3", "id"=>"7"}
Feedback Load (0.5ms) SELECT "feedbacks".* FROM "feedbacks" WHERE "feedbacks"."id" = ? LIMIT 1 [["id", "7"]]
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = 3 LIMIT 1
Rendered feedbacks/show.html.erb within layouts/application (36.2ms)
Completed 200 OK in 188ms (Views: 184.3ms | ActiveRecord: 1.8ms)
Неправильный запрос
Started GET "/test2/feedbacks/7" for 127.0.0.1 at 2011-09-14 02:48:28 -0500
Processing by FeedbacksController#show as HTML
Parameters: {"username"=>"test2", "id"=>"7"}
Feedback Load (0.1ms) SELECT "feedbacks".* FROM "feedbacks" WHERE "feedbacks"."id" = ? LIMIT 1 [["id", "7"]]
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 3 LIMIT 1
Rendered feedbacks/show.html.erb within layouts/application (37.6ms)
Completed 200 OK in 50ms (Views: 47.5ms | ActiveRecord: 1.2ms)