Object(フォームオブジェクト)」について簡易実装してみたいと思います。Recordを使用できるため、可読性の高いコードを実現することができます。Objectを使用することで実装していきます。Objectはデザインパターンの1つで、1つのフォームから複数のリソースを同時保存する際などに役立つ設計手法です。「1つのフォームから複数リソースを同時保存できる」という言葉を聞くと「accepts_nested_attributes_for」を思い浮かべる人も多いとは思いますが、この「accepts_nested_attributes_for」にはバグが多く、Rails生みの親であるDHH氏が消したいとも公言しています。Object」の使用が推奨されています。【Rails】「accepts_nested_attributes_for」について簡潔に解説してみた!モデルの親子関係(ネスト関係)を構築するためのメソッド「accepts_nested_attributes_for」について、出来るだけ簡潔に解説しています。このメソッドは「fields_for」と併用して用いられることが多いので、「fields_for」と併せて学習を進めていきましょう。Objectを使用するメリットとしては以下の2点です。Objectを簡易実装してみます。今回は本の情報と作者情報を同時に保存できるミニアプリを作成します。Objectを用いるため、あえてモデルを分けています。新規アプリケーションの立ち上げまずは以下のコマンドで新規アプリケーションを作成しましょう。db:create今回開発するアプリケーションの環境は以下のようになります。続いて作者情報を管理するモデル「Autherモデル」を作成します。カラムは「name」と「birth_place」と「birth_date」の3つとします。次に本の情報を管理するモデル「Bookモデル」を作成します。モデルの作成には便利なScaffoldの機能を使用し、カラムは「title」と「price」と「publish_date」の3つとします。先ほど作成した「Autherモデル」と「Bookモデル」のアソシエーションを1対多の関係で組みましょう。現在ではルートパスが未定義のため、以下のようにroutes.rbを定義します。現在は本の情報を入力するフォームしか作成されていません。ここに作者情報も入力することができるフォームを加えていきます。「app/views/books/new.html.erb」と「app/views/books/_form.html.erb」を以下のように編集します。Objectの作成に取り掛かります。Objectを作成します。「app/forms」を作成し、その配下に「auther_books.rb」を作成しましょう。Objectはforms以下に配置することをRailsが推奨しているようです。「auther_books.rb」を以下のように編集します。ActiveRecord::AttributeAssignment上記がない場合、UnknownAttributeErrorが発生してしまいます。“publish_date(3i)”=>”8′′」のような形でパラメーターが送信されます。本来であれば1つのpublish_dateとしてストロングパラメーターが認識してくれますが、ActiveRecord:Baseを継承していないFormObjectのようなモデルでは認識してくれません。ActiveRecord::AttributeAssignmentという記述がそのようなエラーを回避してくれます。言うと、ActiveRecord:Baseを継承したモデルではassign_multiparameter_attributesというメソッドがそういった処理を行なってくれています。【Rails】Formオブジェクトでdate_selectを使おうとしたらUnknownAttributeエラーが出た話フォームでdate_selectを使用し、かつFormオブジェクトを用いた場合にUnknownAttributeエラーが発生した時の対処方法について解説しています。date_selectやdatetime_selectは便利なヘルパーメソッドですが、癖のあるメソッドなので慎重に使用していきましょう。...コントローラーの編集books_controller.rbを以下のように編集しましょう。バリデーション上記GIFをクリックすることで、拡大して確認することができます。Objectについて簡易実装してみたので紹介しました。ロジックが散在していたり、モデルが肥大化しそうな場合に役立つ設計のため、ぜひ取り入れてみてください。dangerou...【RSpec】テストをpendingしたい場合はメソッドの頭文字にxを付...Railsエンジニアちばよしはる銀座にあるヘルステック企業のRailsエンジニア。初心者から中級者向けに記事を更新しています。お酒とカレーと競馬が好き。TechTechMedia。