teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

フォームオブジェクトについて解説を追加

2021/02/04 21:56

投稿

oakbow
oakbow

スコア227

answer CHANGED
@@ -8,6 +8,8 @@
8
8
 
9
9
  名前からしてフォームオブジェクトっぽいのは MessageTagForm ですが、これは Message と Tag を多対多で結合するために使用されるリレーションテーブルのモデルなので、名称的には MessageTag とかになるのが普通。
10
10
  MessageTag が内容見るからにフォームオブジェクトっぽいけど、なぜか edit.html.erb のフォームで使われていない。update のフォームで使われているか分からないけど update_message_params 見る限り使われていなさそう。
11
+ フォームオブジェクトというのは文字通り、Webページのフォームを表現するために使われるのが一般的で、実際そうした方が使いやすいです。Message と Tag を両方いっぺんに更新したいという目的にフォームオブジェクトを導入するのは良いやり方だと思いますが、チグハグになっちゃっているので整理した方が良い状態です。
12
+ このまま強引に進めると、今回にみたいに想定外の動作が起きたときに、さらに何が悪いのか分からなくなってきます。
11
13
 
12
14
  いっぺんにやりすぎて混乱しちゃってるように見えるので、まずは Message だけを新規追加、更新するところから初めてはどうでしょうか?
13
15
  その上で、多対多の関係にあるタグ付けの機能を足していきましょう。