form objectって何?

form objectとは、複数モデルと関連した検索フォームや入力フォームの設定を、モデルや、コントローラーのみで行うと、FATモデル及び、FATコントローラーなコードになってしまう問題が発生してしまいます。そこで、フォーム関連の設定をapp/form/~以降のファイルにて設定させることで、コードをスッキリさせるために使う設定が、form objectです。

バリデーションやデータの集約をフォームオブジェクトに任せることで、アプリケーション全体の可読性が向上します。

つまり、フォームに関する設定や、メソッドをapp/form/~以降にまとめておくとコードが見やすくなるという話だと思います。

<form object を使う例>

<使い方>

今回は、関連した他モデルから投稿記事を検索するなど、複雑な検索フォーム及びセレクトボックスを作る際の、form objectを使用します。

  1. appディレクトリにformsディレクトリを作成
$ mkdir app/forms
  1. 利用したいフォームのFormオブジェクトを作成
$ touch app/forms/article_seach_form.rb