2
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 下書き機能の実装で使うenum,draft ,status,publishedについて

Last updated at Posted at 2021-10-09

#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

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