2
4

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 1 year has passed since last update.

【Rails】投稿記事の公開・非公開機能を実装する

Last updated at Posted at 2022-06-18

投稿記事に公開・非公開機能をラジオボタンで実装したので記録を残します!
間違っている箇所があればご指摘頂けると大変助かります(_ _).。o○

前提

・Deviseログイン機能実装済
・Postテーブルにboolean型でカラム追加(今回のカラム名:is_published_flag)

Postモデルに条件式を定義

/app/controllers/posts_controller.rb

class Post < ApplicationRecord
  belongs_to :user

  # 公開・非公開機能
  scope :published, -> {where(is_published_flag: true)}
  scope :unpublished, -> {where(is_published_flag: false)}
   ~省略~
end

scope :スコープの名前, -> { 条件式 }
公開・非公開を見分けられるように条件式を書きます。

Postsコントローラー

/app/controllers/posts_controller.rb

class PostsController < ApplicationController
  before_action :authenticate_user!, only: [:create, :edit, :update, :destroy]

  def index
    @posts = Post.published
  end
~省略~

一覧ページのindexには、公開された記事のみ表示させたいので、@post = Post.publishedとします。

ラジオボタンの実装

true,falseで値を送信
true:publish
false:unpublished

~省略~
       <div>
         <%= f.label :is_published_flag, "公開", value: true %>
         <%= f.radio_button :is_published_flag, 'true' %>
       </div>
       <div>
         <%= f.label :is_published_flag, "非公開", value: false %>
         <%= f.radio_button :is_published_flag,'false' %>
       </div>
~省略~

以上のコードで無事に公開・非公開機能を実装しましたฅ( ˙꒳​˙ ฅ)

・参考記事:https://pikawaka.com/rails/scope

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?