references型を用いてエラーを解決させた。

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

buildメソッドとnewメソッドの違い

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メソッドを使う方が自然に見えるらしい。