ユーザーと投稿の紐付け
まずはpostテーブル(投稿用テーブル)にuser_id
というカラムを追加する為にマイグレーションファイルを作成します。
$ rails g migration add_user_id_to_posts
そしてchangeメソッド内にadd_column :posts,:user_id,:integer
を追加します
add_user_id_to_posts.rb
def change
add_column :posts,:user_id,:integer
end
変更を反映させる為db:migrate
します
$ rails db:migrate
これでpostsテーブル内にuser_id
カラムが追加されました。
そして次はpostコントローラー内のcreate
アクション(投稿を作成するアクション)でuser_id: current_user.id
を追加します。
posts_controller.rb
def create
@post = Post.new(content: params[:content],
user_id: current_user.id)
end
そうするとユーザーと投稿の紐付けができる様になりました。
#紐付け出来てるか確認
本当にユーザーと投稿の紐付けが出来ているか確認する為に投稿の詳細ページで投稿の作成者のみ編集、削除リンクが表示される様にします。
deviseを導入済みなのでdeviseのヘルパーメソッドのcurrent_user
を使って次の様にコードを追加します。
posts/show.html.erb
<% if @post.user_id == current_user.id %>
<%= link_to("編集", "/posts/#{@post.id}/edit") %>
<%= link_to("削除", "/posts/#{@post.id}/destroy", {method: "post"}) %>
<% end %>
すると投稿者のみ編集、削除ができる様になっていると思います。
以上でユーザーと投稿の紐付け完了になります。
お疲れしたッッ!!