Ruby on rails 轨道&x2013;自定义资源路由

Ruby on rails 轨道&x2013;自定义资源路由,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在尝试定制我的表演路线。。。我不希望用户能够通过以下方式查看项目:id 我有一个销售模型,展示路线是: sale GET /sales/:id(.:format) sales#show 但是,我不希望用户能够通过id查看销售,相反,我希望它是: sale GET /sales/:guid(.:format) sales#show guid是创建对象时生成的uuid: def populate_guid self.guid = SecureRandom.

我正在尝试定制我的表演路线。。。我不希望用户能够通过以下方式查看项目:id

我有一个销售模型,展示路线是:

sale GET    /sales/:id(.:format)     sales#show
但是,我不希望用户能够通过id查看销售,相反,我希望它是:

sale GET    /sales/:guid(.:format)     sales#show
guid是创建对象时生成的uuid:

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

您可以在routes.rb中定义自定义管线:

get "/sales/:guid", :to => "sales#show"
然后在控制器中,对于show操作,您可以从url中传递的
guid
中找到想要的销售:

def show
  @sale = Sale.find_by_guid(params[:guid])
end
在config/routes.rb中

get '/sales/:guid', to: 'sales#show'
或者,如果您使用rails 4,您可以:

resources :sales, param: :guid
内部控制器

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

什么是
:guid
,一些备用id?这是我正在生成的UUID(在原始帖子中添加了更多信息)。我喜欢rails 4路!谢谢