2013-11-02 9 views
6

Я пытаюсь настроить мой показать маршрут ... Я не хочу, чтобы пользователи могли просматривать элементы по: ид ...Rails - Маршруты пользовательских ресурсов

У меня есть модель продаж, и показать маршрут:

sale GET /sales/:id(.:format)  sales#show 

Но я не хочу, чтобы пользователи смогут просматривать продажи по идентификатору, вместо этого, я хотел бы, чтобы это было:

sale GET /sales/:guid(.:format)  sales#show 

Код GUID является UUID Я генерирую, когда объект создается:

def populate_guid 
    self.guid = SecureRandom.uuid() 
end 
+0

Что такое ': guid', некоторые альтернативный идентификатор? – jvperrin

+0

Это UUID, который я генерирую (добавлено больше информации к оригинальному сообщению) – cmw

ответ

1

Вы можете определить собственный маршрут в вашем routes.rb:

get "/sales/:guid", :to => "sales#show" 

А затем в контроллере, для показа действия, вы найдете продажи вы хотите от guid, который был принят в URL:

def show 
    @sale = Sale.find_by_guid(params[:guid]) 
end 
9

В конфигурации/routes.rb

get '/sales/:guid', to: 'sales#show' 

или если вы используете рельсы 4 вы можете:

resources :sales, param: :guid 

В контроллере

def show 
    @sale = Sale.find(params[:guid]) 
end 
+0

Я люблю рельсы 4 пути! благодаря – brookz

Смежные вопросы