RailsのRESTfulなインターフェイスにおいて、showアクションは、例えば /lessons/1
のように /models/:id
となっています。基本はこれで良いと思いますが、単調な数字の id ではなく、各モデルが持っているユニークなユーザー名(文字列)等を使いたい場合の処理。
to_param メソッド
to_params メソッドを使用するだけです。
1 2 3 4 | # In your model class, def to_param uniq_user_name # string end |
この to_param
メソッドによりActiveRecordが使用するID(アイデンティファー)を定義します。デフォルトは、idです。これをモデルの他のアトリビュートにすることにより、ActiveRecordが使用するIDを変更することができます。
この処理により、
1 2 3 | <%= link_to(@lesson) do %> html-code-here <% end %> |
で生成されるURLは、/lessons/id
ではなく、/lessons/uniq_user_name
となります。
また、showアクションでは、
1 2 3 4 5 6 | def show # Parameters: {"id"=>"karate_edogawa"} # Uniq string identifer is put on the parameters, # id usually has just integer. @lesson = Lesson.find_by(:uniq_user_name => params[:id]) end |
のようにパラメータに変化があります。