url_forの中で使われているpolymorphic_urlというメソッドがありまして、便利。
これにモデルのインスタンス、配列、ハッシュ等を渡すと、urlにしてくれる。
たとえば、
user = User.first
polymorphic_url(user)
とすると、user_url(user)と同等のurlが帰ってくる。
他にも、
polymorphic_url(User)
# => users_url
polymorphic_url([:admin, User])
# => admin_users_url
などなど、いろいろできる。
でもさ、url_for使えば一緒じゃね!?
と思うかもしれないが、polymorphic_pathを直接使うことにより、polymorphic_pathのoptionを使うことができるわけです。