留学中はネスト先のファミリーと問題を起こさないでね
モデルをネスト構造にしたらなんかうまくできないなーと思ってたら、
子テーブルに親テーブルの外部キーを置くカラムを作ってなかった。
超凡ミス。そりゃーはいらんて。
まずはカラム追加しましょ
カラムの追加方法(参照)
- 新しくマイグレーションを作成する
- 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というのに行き着いた
つづく!