Rails 下書き機能の実装で使うenum,draft ,status,publishedについて


draft publishedとは

draftは下書きのことです。
publishedは公開のことです。
statusは状態のことです。
下書きをしたり 、書いた記事を公開したりする時に使います。
statusは
またenum(列挙型)と合わせて使われることがよくあります。
enumの資料です。
⚫︎参考資料
https://qiita.com/shizuma/items/d133b18f8093df1e9b70

下書き記事と公開記事を作成

下書き記事と公開記事を作成を作成するには、modelのarticle.rbなどに
enum,status,draft,publishedを使います。
これは記事の状態を表す記述です。

models/article.rb
enum status { draft: 0, publishe: 1}

他にもこのような書き方があるみたいです。

models/article.rb
enum status { draft: "draft", published: "published"}

削除も入れる時はdeletedも記述できるみたいです。

models/article.rb
enum status { draft: 0, published: 1,deleted: 2}

配列で表すと下のようにできるみたいです。

models/article.rb
enum state: [:draft, :published, :deleted]

データベースに記事を保存しておくためのstatusカラム追加

$ rails g migration AddStatusToArticles status:integer

⚫︎補足
integerはstringでも使えるみたいです。
draft: "draft"のような書き方をした場合。

statusカラムの追加をするために、
*******_add_status_to_articles.rbに下のように追記します。

*******_add_status_to_articles.rb
class AddStatusToArticles < ActiveRecord::Migration[6.0]
  def change
    add_column :articles, :status, :integer, default: 0, null: false
  end
end

他にも

add_column :articles, :status, :string, default: "draft"

みたいなやり方もあるみたいです。
status:integerのintegerをstringにしたら上記みたいにもできるみたいです。

マイグレーション実行(データベース反映)

$ rails db:migrate

⚫︎最後に
この辺のやり方で下書き保存機能はできました。
開発している環境によって変わってくる場合があるので、
参考にしてみてください。

⚫︎参考資料
https://pgmg-rails.com/blogs/21
https://www.autovice.jp/articles/124?tag_id=41
https://qiita.com/shimadama/items/798f3f02058b6f91a248
https://kimuraysp.hatenablog.com/entry/2017/01/07/102403