0
2

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 2021-06-22

#イメージ

#はじめに

自分のみ閲覧できるように投稿したい!公開、非公開等投稿の公開範囲を設定したい!!!
と思った時に、該当する記事が見つからない!!!!!不便だなと思ったので、ここにまとめておきます。

#環境
この記事では以下の環境(2021年6月22日時点)で実装できました。

Ruby: 2.6.6
Rails: 6.0.3

#つけていないといけない機能
①ログイン機能
②投稿機能

#実装

既に作成したテーブルに新しくカラムを追加する場合は
カラムを追加するマイグレーションファイルを作成する。

「rails g migration クラス名 カラム名:データ型」でコマンドを実行する。

例)tweetテーブルにprivacyカラムを追加する場合

$rails g migration AddPrivacyToTweets privacy:string

コントローラーにカラム名を追加する。
例):privacy

tweets_controller.rb
private
    def tweet_params
        params.require(:tweet).permit(:body,:privacy)
    end

投稿を作成するページに以下を記述する。
例)非公開と公開で設定したい場合

new.html.erb
 <%= f.select :privacy, [["公開", 1], ["非公開", 2]], include_blank: "選択して下さい" %>

投稿を表示させるページに公開に設定したい投稿範囲を設定する。
公開したい範囲の最初に以下を記入する。

index.html.erb
<% if t.privacy=="1" %>

同じページに非公開に設定したい投稿範囲を設定する。

index.html.erb
<% elsif t.privacy=="2"&&t.user.id==current_user.id %>

<% end %>

#完成

公開で投稿すれば全ユーザーが閲覧できるが
非公開で投稿すれば自分のみしか閲覧できない

#追記
def_indexに@tweets = Tweet.allがなかったらActionView::Template::Error (undefined method `id' for nil:NilClass):が出てしまうことがあるので、エラーがでたら追記してください

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?