0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Rails]Formオブジェクトにアソシエーションが定義できない理由

Posted at

解決したいこと

Formオブジェクトに、アソシエーションが定義できないのはなぜか。

立てた仮説

アソシエーションは、モデルを利用した「テーブル同士」の関連付け。
テーブル間アクセスに関する設定なので、
そもそも「テーブルがない」フォームオブジェクトにはつけられないと考えた。

フォームオブジェクトにattr_accessorメソッドで、
モデルの属性を追加し、「操作」可能にはするが、
実際に値を保存するのはモデルのテーブルであって、
フォームオブジェクトのテーブルではない。

上記を踏まえると、
ActiveStorageのhas_one_attachedも
フォームオブジェクトにはつけられないと考える。
こちらも、モデルの1つのレコードのidに紐付いて管理されるので、
そもそもレコードを持てないフォームオブジェクトは使えないと考えた。

質問して確認した結果

考え方はok。
ちなみに、一意制約もフォームオブジェクトはつけられない。
なぜなら、DBに一度検索しに行くから。

has_one_attachedに関しては、同じ意見を持つが、
検証してみないと確実な答えは出ない。

感想

has_one_attachedについては、一度検証してみたいと思った。
横道が気になりすぎてオリアプがつくれないと本末転倒なので、
まずはそちらに注力する。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?