パスワード変更の機能をどこにもたせるべきか

ちょっと色々わからなくなったので、誰かのアドバイスを期待してここに書く。

簡単に前提を書くと、UserモデルのCRUDとは別にUserのパスワードを変更する画面が必要になった。Usersコントローラにpassword_editみたいなactionを書くのもあまりきれいじゃないなと思ってコントローラを分けることにした。

resources :users do
  resource :password
end

確実にUserのレコードは必要になるので上記の用にネストさせることにした。ここで気になるのがpasswordのコントローラ名。通常PasswordsControllerになる。ただ、PasswordsController内の処理は確実にUserに依存する処理が入るため、これはこれであまりしっくりこない。別にPasswordsControllerを他で使う予定があるわけじゃないけど、User::PasswordsControllerの方がいい気がする。

resources :users do
  resource :password, :only => :edit, :module => 'user'
end
# app/controllers/user/passwords_controller.rb
module User
  PasswordController < ApplicationController::Base

ただ、たかがあるモデルのカラムの為にここまでする必要があるのか?そもそもリソースじゃないよなと思ったりもするわけで。やっぱりUsersコントローラにactionを用意する程度に留めるべきなのだろうか。

追記:10/09/11

やっぱりコントローラを作る(というよりresourcesを追加するのが)がおかしいと思いはじめ、結局気にしてるのはURLなので以下のようにしてみようかなと思う。
resources :user do
  match ‘password/edit’ => ‘users#password_edit’
end