互いに独立して更新できるようにしたい3つの異なるタイプフィールドを持つユーザーモデルがあります
同じページには、同じモデルで動作する 3 つの異なるフォームがあります。
ユーザー プロフィールの画像を変更する
ユーザー名/メールアドレスの変更
ユーザーパスワードを変更する
それらが分離されている理由: 写真は選択時に自動的にアップロードされます (パスワードを要求する必要はありません)。名前/メールはパスワードを要求せずに変更できますが、フォームを送信する必要があります。パスワードを変更するには現在のパスワードが必要です。
現在 User#update には、ロジック用の一連の if/else ブランチがif params[:commit] == "Update Password"
あります。パスワードelsif params[:commit] == "Update Info"
を更新したり、名前/メールを更新したりします。
ロジックが長くなるのが好きではありません。コントローラーのロジックをビューに結び付けるのは良い習慣ではないと思います (ロジックはparams[:commit]
送信ボタンに表示されるテキストに基づいているため)。
これを行うより良い方法はありますか?