2012-06-16 3 views
1

У меня есть два ресурса:Вложенные ресурсы без идентификатора родителя в маршруте

resources :users do 
resources :cars 
end 

Ассоциация является:

  • Пользователь может иметь много автомобилей
  • Автомобиль принадлежит пользователю

При выполнении такого рода вложенных ресурсов я получаю URL-адреса, как:

/users/:id/cars/new 

Мой вопрос:

Если это имеет смысл делать только /cars/new (без/пользователей /: Ид), потому что я ПОЛУЧИТЕ :id от CURRENT_USER входа в систему, как бы я решить, что в маршруты?

ответ

4

Я бы не использовать вложенные маршруты на всех. Вы можете иметь вложенные модели, не имея вложенных маршрутов. Просто загрузите текущего пользователя из сеанса (вы, вероятно, делают это уже), и убедитесь, что никто не может получить доступ к контроллеру автомобилей, если они не вошли в систему

+3

+1 и убедитесь, что вы загружаете только тот автомобиль, который принадлежит текущему пользователю: D – shime

0

В routes.rb

resources :cars, :only => [:new, :create] # if you don't need all actions 
resources :users do 
    resources :cars 
end 

В автомобилях контроллер что-то вроде

before_filter :find_user 
... 
private 
def find_user 
    @user = params[:user_id] ? User.find(params[:user_id]) : current_user 
end 
1

Правильный ответ на этот вопрос:.

resources :users do 
    collection do 
    resources :cars 
    end 
end 
Смежные вопросы