Ruby
Effective Ruby 第5章、項目34 「Proc の引数の個数の違いに対応できるようにすることを検討しよう」を読んで、Proc の知識が深まったのでアウトプットしてみます。
導入 ※ Rails 5.0.6 に導入しています。 Gemfile に gem "rspec-rails", "~> 3.1.0" を追加。
題名の通り、Form Object ですが、こんな感じで実装してるよってのを紹介したいと思います。
Rails で様々な条件で複合検索ができる画面を実装していて、フォームから受け取った値をそのままモデルに渡してコントローラは条件分岐なしにスッキリ実装したかった。 何の気なしに以下のようなコードを書いた。
セッターメソッド インスタンスメソッド内でセッターメソッドを使う場合はselfをつけないと 単なるローカル変数の定義になってしまう。 ただし、selfを使うのはその場合のみにしよう。 つまり、インスタンスメソッドを使用する際に self を付ける必要はない。