user_id' for nil:NilClass
上記のエラーをどうやって解決したか?
この時、user_idにあたるものがデーターベースに定義されていなかった。
そこでreferences型を用いてマイグレーションファイルに user_idを付けれるように設定。
postのマイグレファイル
t.references :user #マイグレをいじるので、statusがdownの状態でやる。
スキーマファイル
t.integer "user_id"
t.index ["user_id"], name: "index_posts_on_user_id"
その後、postとuserに関連(今回は1対多)を持たせたいので、以下のようにする。 post.rb
belongs_to :user
user.rb
has_many :posts
post.controller.rb
@post = current_user.posts.build(post_params)
#newではなくbuildに設定する。
#current_user.boards.buildと実行することで、user_idを登録したboardオブジェクトを初期化できる
buildメソッドはnewメソッドのエイリアス(別名)なので違いは意識しなくていいが
親モデルに属する子モデルのインスタンスを新たに生成する場合
(current_user.posts.buildのような場合)
buildメソッドを使う方が自然に見えるらしい。