RailsRailsで関連モデルを同時に更新するようなコードを書こうとして、思いの外ハマって抜けられなくなったので備忘録。メールアドレスやパスワードのような認証情報と、生年月日や趣味のようなプロフィール情報を分けて管理したい場合など結構ありがちだと思います。以下のような関連を持つモデルのようなイメージ。書いてみるひとまず自分の思うがままにコードを書いていく。:userend親モデルのUserにaccepts_nested_attributes_forを設定することで親モデルから子モデルを作成したり、保存したりできるようにする。endendviewでfields_forを使うのでprofile_attributesをストロングパラメータに記入しておく。(fields_forは[引数に与えた名前]_attributesというname属性になるためらしい)仕様としてプロフィール情報を入れるのはユーザ情報編集時のみとするため、登録しているUserモデルからProfileモデルを生成できるようにeditに@user.build_profileと何気なく記入。後にどツボへの道へと誘うことになるとはこの段階では知る由もなかった...。%>プロフィール情報はnewのタイミングでは表示させないようにcurrent_page?を設定。%>で記入してプロフィール情報入力欄出ない問題にも軽くハマっているのは内緒の話。次にプロフィール情報を入力するために編集いい感じにプロフィール情報を入力できるようになっている。プロフィール情報を入力。登録できたか確認いい感じに登録できている。問題が起きる...登録までできて、「いやー、ひと仕事終わったよ」と清々しい気分でいましたが、再び編集画面を表示した際に違和感を覚える。あれ...?プロフィール情報が表示されてなくね...?いやいや、まさかそんなはずは...と思い、再びshowしてみるとProfileモデルなんて存在してねーけど...と怒られる。[]>さっきまで存在していたプロフィール情報がどこか遠い国に旅立ってしまっている...登録し直したり、デバッグしてみたりで原因を探ること小一時間。問題点があらわになる。2.7ms)なんかDELETEが走っちゃってますけど!!!!どうもbuild_profileでProfileモデルを生成の際は一旦存在するレコードを消してから生成みたいなことが起きているっぽい。いうことでbuild_profileを使わないように修正。@user.profile.blank?endてな感じで無事プロフィール情報を登録してから編集画面にいっても情報が消えなくなりました。いうことで今...2017-09-05【Rails】多対多のアソシエーションに別名をつけたいあなたに最近涼しくなってきましたねー...と思ったら次の日は暑かったりで...2017-01-07【Rails】enumで特定の値を選択肢から省きたいきむらです。LambdaでSinatraを動かしてみるプログラミングスクール勤めのエンジニアが転職するってよ月別アーカイブはてなブログをはじめよう!kimurayspさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。