enumで特定の値を除外する場合

2018/12/20 | Ruby on Rails

enumで選択肢が2つある場合

# models/blog.rb

class Blog < ApplicationRecord
  enum status: { published: 0, unpublished:1 }
end

などは

Blog.published

などで取得できますが、選択肢が3つある場合

# models/blog.rb

class Blog < ApplicationRecord
  enum status: { published: 0, unpublished:1, draft:2 }
end

に、draft以外を取得したい時などがあります。その際には

Blog.where(status: [:published, :unpublished])

Blog.where.not(status: :draft)

などで指定した値を削除することが出来ます。

# models/blog.rb

class Blog < ApplicationRecord
  enum status: { published: 0, unpublished:1, draft:2 }
  def self.not_delated
    where.not(status: :draft)
  end
end

などで

Blog.not_delated

でも取得可能ですね。非常に便利です。

連記事

OpenHACCP

2024/05/03 | Ruby on Rails

先日小規模な飲食店向けにHACCPに基づく衛生管理を記録し、保存できるサービス OpenHACCP をローンチしました。 現在飲食店では重要管理計画の作成、毎日の衛生管理や重要管理計...

bundle exec cap production puma:nginx_config

2024/03/26 | Ruby on Rails

cd /etc/nginx sudo mkdir sites-available これをしてから % bundle exec cap production puma:nginx_config...

Amazon Linux 2023にmysqlをインストール

2024/03/26 | Ruby on Rails

Amazon Linux 2023でmysqlのインストール方法 $ sudo yum localinstall -y https://dev.mysql.com/get/mysql80-commu...

simple_formのcollectionのselectを任意の値で並べる方法

2020/02/21 | Ruby on Rails

Railsのsimple_formでorder作成時にproduct_nameとproduct_codeを持つproductをproduct_codeで並べ替える方法です。 ちょっとハマったので...