سؤال

we have an show-action which should find by the own_key the right entry. The own_key is generated as UUIDTools::UUID.timestamp_create().to_s. The following question is now here.

class ListController < ApplicationController
  respond_to :html, :xml, :json
  def show
    @list = List.find_by_own_key(params[:own_key])
    respond_with(@list)
  end
end

the routes are here so generates

resources :lists
match '/:id' => 'list#show'

why did we get also an entry back if we only type one simple letter after the /? The own_key look so f6d47c20-a276-11e1-b127-68a3c454c2b4. So if we type an /lists/f i get the entry with an f own_key. how can we manage that we only get the entry with the own_key? Could it run by an contraint?

thanks for the help if anone can help us?

Marcus

هل كانت مفيدة؟

المحلول

From your routes, params[:id] will contain the I'd to search for, however you're using params[:own_key] which will be nil. Instead of searching for the record with the specified value of own_key your code will always fetch the row with a null own_key.

Change your code to use params[:id] and you should be ok

نصائح أخرى

U can use constrainsts for route or check params[:own_key] in controller

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top