2011-07-26 10 views
8

Thread(id、uuid)uuidのようなモデルが一意に生成された識別子であるとします。 IDが、ユーザーへ:routes.rb、パスにはどのように異なるプライマリキーを設定しますか?

edit_thread GET /threads/:id/edit(.:format)      {:action=>"edit", :controller=>"threads"} 
thread GET /threads/:id(.:format)        {:action=>"show", :controller=>"threads"} 
PUT /threads/:id(.:format)        {:action=>"update", :controller=>"threads"} 

使用しないように:私は、デフォルトルートを変更したいUUID ---これはRailsの/ routes.rbをして可能になる方法は?

おかげ

答えて

-1

:idは何が好きに変更することができます。あなたのparamsハッシュにはあなたのルートで選択した名前が設定されているので、それを:uuidに変更した場合、それに応じてコントローラーを変更するだけです(o = Model.find_by_uuid(params[:uuid])

+0

私が得意ではないものは、私のルートでそれを変更する方法です。私は試合の束を行う必要がありますか?私はレールがこれに対してよりエレガントな設定をすると思っていた... thxs – AnApprentice

+1

@AnApprentice:あなたはあなたがリソース経路の 'id'パラメータを変更したかったということを気付かなかった。私はこれが可能だとは思わない(あなたはここでの大会規約を破っている)。同様の質問が以前に尋ねられました:(http://stackoverflow.com/questions/810385/how-to-rename-the-default-identifier-param-id-in-rails-map-resources)。 – cam

7

正しく理解すれば、 :idフィールドでは、Railsはルート内の:uuidフィールドを使用します。

これは、達成するのはとても簡単です、あなたのモデル内to_param方法覆す:

def Thread 
    def to_param 
    uuid 
    end 
end 

をして、コントローラ内部で、次のようなもの記述する必要があります。

thread = Thread.find_by_uuid(params[:id]) 

・ホープ、このことができますし。

関連する問題