フォームオブジェクトを書く理由、それはすなわち
fatになるcontrollerをスリムにするためである。
controllerには,searchメソッドなどを書きがちで、どんどん肥大化する傾向にある
def search @hoge = Hoge.where(id: XXX) if id.present? @hoge = @hoge.where(name: XXX if name.present?) end
みたいなのが増えがち。
そのため、FormObjectを作成して、このロジック部分を切り出してやる。 ちなみに、search関係はモデルに書くというスリム化の方向性もあるが、どちらにせよfatになってしまうのは逃れられないケースが多々。
Ruby on RailsのFormが単体のモデルに依存しないような場合や、フォーム専用の特別な処理をモデルに書くべきではないといった場合はForm Class(Form Object)を作る手法があります。合わせてオリジナルのフォームビルダを作成してViewへのロジックの記述量を減らす手法を紹介します。
RailsのForm ClassとForm builder | 酒と涙とRubyとRailsと
この記事、よい。
初心者にとってありがたい。 [初心者向け] RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか - Qiita