0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails 投稿とユーザーの紐付け

Last updated at Posted at 2020-10-24

はじめに

今、メモアプリを開発をしています。
全てのメモの一覧が表示されてしまうのですが、どうにか
メモ一覧ページにログインユーザーのメモのみの一覧を表示したいです。

今回はそれについて学習していきます。

メモとユーザーの紐付け

まず、各投稿が誰がしたのかを判別するために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なら表示される!
これで大丈夫だと思います!

最後に

説明が分かりにくいと思いますが何かの参考になれば幸いです。
また、間違っているところがあればご教授いただけるとありがたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?