ドグサレ初心者のへっぽこビッグウェーブ

地球の底辺にいるゴミがプログラミングとか音楽とかを語るクソブログ

留学中はネスト先のファミリーと問題を起こさないでね

モデルをネスト構造にしたらなんかうまくできないなーと思ってたら、

子テーブルに親テーブルの外部キーを置くカラムを作ってなかった。
超凡ミス。そりゃーはいらんて。

まずはカラム追加しましょ

カラムの追加方法(参照
  • 新しくマイグレーションを作成する
  • changeメソッド内、add_corumnで追加
    • add_column : テーブル名、 フィールド名、データ型(+オプション)
  • 今回使わなかったけど、特定のカラムのあとに追加するなら、オプションに「after: :hogehoge」みたいな感じで書く

rails上でDBを確認するには

> rails dbconsole
> .tables
> .schema テーブル名

けどこれはまだ関係なかった。

newでモデルをうまくつくれていないぽい。




いろいろしらべると、buildというメソッドが見つかる。qiita.com

newとの違いというと、外部参照キーを自分でつくってくれるくらいらしい。
プロはnew使ってたし、newでがんばるか。。。



調べたところ、form_forの引数に問題あったもよう。

<%= form_for (@music) do |f| %>

を、

<%= form_for [@artist, @music] do |f| %>  #([@artist, @music])でもいい

と書きなおしたところ、通った。

なんじゃらホイとしらべたら説明が。
resourceをネストしたとき、子クラスだけを作成/更新する場合は、form_forの引数を[親、子]の配列にする必要があるようです。


だが、次は.save時の動きでエラー。
やっぱりネストするといろいろおかしいとこ出てくるな。。。どうにかならんかな。。。

と調べてたら、shallowというのに行き着いた


つづく!