【Rails開発メモ】ユーザーと投稿を結びつける実装手順

投稿とユーザーを紐づける実装手順をメモしておきます。今まで作ってきたDBを紐づけるだけなので、ビビる必要はないです。

エラーが出る箇所もあるので、記事後半で解説します。

  • STEP1
    Postsテーブルにuser_idカラムを追加する

    投稿が「誰によるものなのか」を識別するために、Postsテーブルにuser_idを追加しましょう。コマンドは以下の通りです。

    けんぞう

    やはり後からカラムを追加するのは面倒ですし、思わぬエラーも出たりするので、最初のDB設計をちゃんとやるべきですな
  • STEP2
    インスタンスメソッドで投稿したユーザーを特定

    「誰が投稿したの」ということをはっきりさせるためのインスタンスメソッドを作りましょう。コードは以下の通りです。

    若干ややこしいところなので、図解すると以下のような感じです。

  • STEP3
    viewを書き換え

    最後にviewを書き換えていきましょう。「投稿したのは、コイツやで」ということが分かるように編集します。

     

エラーが出たところ

最後のviewで投稿したユーザーの名前などを出力しようとした際、該当する投稿のuser_idカラムがnilだとエラー出ちゃいます。

なぜそんなことが起きるかと言うと、もともとPostsテーブルはuser_idカラム無しで作っていて、その状態で投稿をいくつかぶっ込んでいたからです。図解すると以下の感じ

対処法として一番手っ取り早いのは、一旦Postsテーブルを空にするのが良いかと思います。コマンドは以下の通りです。