LoginSignup
0
0

More than 3 years have passed since last update.

Formオブジェクトの概要

Posted at

Formオブジェクトとは

Formオブジェクトとは、1つのフォームからのデータ送信で複数のモデル操作、テーブルに保存しない情報にバリデーションを設定したい場合に使います。

モデルに似た機能を持ったクラスを作り、バリデーションやデータを保存する処理を記述して実装します。
実装手順はこんな感じです。

1.modelsディレクトリ直下にファイル作成、クラスを定義
2.include ActiveModel::Modelの設定
3.attr_accessorで保存したい複数のテーブルのカラム名を属性値として扱えるように記述
4.バリデーションを記述
5.データをテーブルに保存する処理を記述
6.コントローラーのnew、createアクションなどでFormオブジェクトのインスタンスを生成
7.フォーム作成の部分をFormオブジェクトのインスタンスを引数として渡す形に変更

以下はコードの一例と内容についてです。

qiita.rb

class OrderPurchase  #OrderモデルとPurchaseモデルの処理
  include ActiveModel::Model
  attr_accessor

   #ここにバリデーションなどの記述をする

  def save
   #ここにデータを保存する記述をする
  end
end

①include ActiveModel::Model
ActiveModel::Modelをincludeすると、バリデーションなどの機能が使えるようになります。
Railsガイドにも記載がありました。
Railsガイド

②attr_accesor
attr_accesorでは、モデルに対応するテーブルに設定したカラム名以外の属性を扱う時に使用します。
ゲッターとセッター(データの取得と更新)をこの記述だけでできるようになります。

①でモデルの機能が使えるようしているので、②でバリデーションを設定したい属性を指定できるのだと思います。

おわりに

プログラミング初心者が備忘録としてまとめたので、間違い等あるかもしれません。
新たにわかった事や、間違いがあれば随時更新します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0