通常のレールの方法で show メソッドにアクセスできる製品コントローラーがあります
product GET /products/:id(.:format) products#show
ここで、ルート パス (例: mydomain.com/24fe3455g) でアクセスできる、各製品に一意のハッシュ URL を用意したいと考えています。
これを行う最良の方法は何ですか?
ベスト・フィリップ
通常のレールの方法で show メソッドにアクセスできる製品コントローラーがあります
product GET /products/:id(.:format) products#show
ここで、ルート パス (例: mydomain.com/24fe3455g) でアクセスできる、各製品に一意のハッシュ URL を用意したいと考えています。
これを行う最良の方法は何ですか?
ベスト・フィリップ
md5
各行のDBにを格納できます。id+timestamp
たとえば、このmd5を(連結された文字列として)計算してから、次のようなルートを作成します。
product GET /products/:hash(.:format) products#show
UUID
を一般的な一意のIDに使用することもできます
まず最初に、一致するルートを で定義する必要がありますroutes.rb
。これは一種の「フォール スルー」であるため、通常はルートの最後に配置します。それを定義する方法については、ガイドをご覧ください: http://guides.rubyonrails.org/routing.html
アプリケーション全体で ID の代わりにこのハッシュ スタイルの URL を常に使用する場合は、モデルにメソッドto_param
とメソッドも実装します: http://apidock.com/rails/ActiveRecord/Base/to_paramself.from_param
ツールのサポートが必要な場合は、 Friendly_id のような宝石を使用することもできます: http://rubydoc.info/github/norman/friendly_id/master/file/Guide.rdoc