#イメージ
#はじめに
自分のみ閲覧できるように投稿したい!公開、非公開等投稿の公開範囲を設定したい!!!
と思った時に、該当する記事が見つからない!!!!!不便だなと思ったので、ここにまとめておきます。
#環境
この記事では以下の環境(2021年6月22日時点)で実装できました。
Ruby: 2.6.6
Rails: 6.0.3
#つけていないといけない機能
①ログイン機能
②投稿機能
#実装
既に作成したテーブルに新しくカラムを追加する場合は
カラムを追加するマイグレーションファイルを作成する。
「rails g migration クラス名 カラム名:データ型」でコマンドを実行する。
例)tweetテーブルにprivacyカラムを追加する場合
$rails g migration AddPrivacyToTweets privacy:string
コントローラーにカラム名を追加する。
例):privacy
private
def tweet_params
params.require(:tweet).permit(:body,:privacy)
end
投稿を作成するページに以下を記述する。
例)非公開と公開で設定したい場合
<%= f.select :privacy, [["公開", 1], ["非公開", 2]], include_blank: "選択して下さい" %>
投稿を表示させるページに公開に設定したい投稿範囲を設定する。
公開したい範囲の最初に以下を記入する。
<% if t.privacy=="1" %>
同じページに非公開に設定したい投稿範囲を設定する。
<% 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):が出てしまうことがあるので、エラーがでたら追記してください