Ruby/Rubyの基礎知識

RailsでTwitterクローンを作る(3) -- 投稿とユーザを紐付けする(4ページ目)

モデル同士の関連(association)を定義する方法、アプリケーションにユーザ認証を追加する方法、マイグレーション(migration)機能でDBスキーマに変更を加える方法などを学びます

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

モデル同士を関連付ける

それではようやく、ログイン状態で投稿したデータをユーザと紐付けます。モデル同士を関連付けるためには、Postモデルがuser_idというカラムを持ち、その中に投稿者のidが入っている必要があります。

migrationファイルを作成したらお馴染みの bundle exec rake db:migrate です。これでpostsテーブルにuser_idカラムが追加されます。

DBの準備が済んだら、モデルに手を入れていきましょう。ActiveRecordの機能を使えばモデル同士の関連をシンプルに記述することが出来ます。UserモデルとPostモデルに次のコードを追加します。

上記の記述により、あるユーザの投稿一覧がUser#postsで取得でき、ある投稿の投稿者がPost#userで参照できるようになります。

PostsController#post_paramsで、ログイン中のユーザidをパラメータに追加します。

これで、投稿にユーザ情報を紐付けることができました。さらに投稿一覧にも発言者のアイコンを表示しましょう。app/views/posts/index.html.erbを次のように変更します。

発言者のアイコンと名前を表示し、自分の発言のみ削除できるようにします。user_idのついていない今までのデータは一旦消してから、試してみましょう。

最終的に、次のような画面が出来上がりました。少しはTwitterっぽくなってきたでしょうか。

last

機能追加のヒント

Rails入門の連載は今回で一旦終わりです。Railsに初めて触れる人に、なんとなくRails開発の雰囲気を掴んで頂けると嬉しいです。

応用編として、このTwitterもどきに「フォロー」や「お気に入り」、「RT(リツイート)」機能を付けてみると面白そうな気がします。今後の連載でも題材として使用するかもしれません。

【編集部おすすめの購入サイト】
Amazonで Ruby 関連の書籍をチェック!楽天市場で Ruby 関連の書籍をチェック!
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます