はじめに
今、メモアプリを開発をしています。
全てのメモの一覧が表示されてしまうのですが、どうにか
メモ一覧ページにログインユーザーのメモのみの一覧を表示したいです。
今回はそれについて学習していきます。
メモとユーザーの紐付け
まず、各投稿が誰がしたのかを判別するためにnotesテーブル(投稿系のテーブル)に、user_idというカラムをたす。
class CreateNotes < ActiveRecord::Migration[5.2]
def change
create_table :notes do |t|
t.text :title
t.integer :user_id
t.integer :category_id
t.text :explanation
t.timestamps
end
end
end
$ rails db:migrate:reset
#メモに投稿したユーザーのidを保存
投稿を保存する際に、先ほど追加したuser_idカラムにも情報を入れる。
buildメソッドについて
notes.controller.rb
def create
@note = current_user.notes.build(note_params)
@note.save
redirect_to notes_path
end
メモ一覧ページにユーザーの投稿をのみを表示する。
<div class='container'>
<div class='row'>
<h2>メモ一覧</h2>
<table class='table'>
<thead>
<tr>
<th>タイトル</th>
<th>カテゴリー</th>
</tr>
</thead>
<tbody>
<% @notes.each do |note| %>
<% if user_signed_in? && current_user.id == note.user_id %> #ここを追加
<tr>
<td>
<%= link_to note_path(note) do %>
<%= note.title %>
<% end %>
</td>
<td><%= note.category.name %></td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
</div>
</div>
メモ一覧のeach文(繰り返し)の中に記述。
<% if user_signed_in? && current_user.id == note.user_id %>
この記述でログインしているユーザなのか?とログインユーザーのidとメモを投稿したユーザのidが同じか見ている。
trueなら表示される!
これで大丈夫だと思います!
最後に
説明が分かりにくいと思いますが何かの参考になれば幸いです。
また、間違っているところがあればご教授いただけるとありがたいです。