Ruby on rails 如何在rails中通过ownkey找到正确的条目

Ruby on rails 如何在rails中通过ownkey找到正确的条目,ruby-on-rails,database,ruby-on-rails-3,routing,findby,Ruby On Rails,Database,Ruby On Rails 3,Routing,Findby,我们有一个show action,它应该通过自己的_键找到正确的条目。own_键生成为UUIDTools::UUID.timestamp_create()。to_s。 下面是一个问题 class ListController < ApplicationController respond_to :html, :xml, :json def show @list = List.find_by_own_key(params[:own_key]) respond_with

我们有一个show action,它应该通过自己的_键找到正确的条目。own_键生成为UUIDTools::UUID.timestamp_create()。to_s。 下面是一个问题

class ListController < ApplicationController
  respond_to :html, :xml, :json
  def show
    @list = List.find_by_own_key(params[:own_key])
    respond_with(@list)
  end
end
如果我们只在/后面键入一个简单的字母,为什么还要返回一个条目? 自己的钥匙看起来如此
f6d47c20-a276-11e1-b127-68a3c454c2b4
。因此,如果我们键入/lists/f,我会得到一个带有f-own\u键的条目。我们如何管理我们只使用自己的_键获取条目? 它能用一个合同吗

如果没有人能帮助我们,谢谢你的帮助


Marcus

U可以对路由使用约束,也可以在控制器中检查参数[:own_key]


:constraints=>{:own_key=>/regexp pattern for uuid/}

从您的路由中,
params[:id]
将包含要搜索的id,但是您使用的
params[:own_key]
将为零。您的代码将始终使用空的own_键获取行,而不是搜索具有指定值own_键的记录


将您的代码更改为使用params[:id],您应该可以

那么是否有一个条目的密钥完全是“f”呢?不,密钥从来都不是只有一个字母,它们总是由UUID工具生成的。这就是我们的问题,过滤不正确,这听起来不应该发生。值得我检查一下SQL执行的内容。这是2012年5月20日20:17:08+0200 ListsController处理127.0.1的development.log
Started GET”/lists/f6d47c20-a276-11e1-b127-68a3c454c2b4“的输出:{“id=>”f6d47c20-a276-11e1-b127-68a3c454c2b4”}列表加载(0.3ms)[0m[1mSELECT“lists.”来自“lists”其中“lists”。“admin_key”为空限制1[0m Rendered lists/show.html
现在我遇到了另一个问题。使用此show方法,我总是得到相同的条目
resources :lists
match '/:id' => 'list#show'