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

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

連記事

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

2020/02/21 | Ruby on Rails

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

pdf出力

2017/06/30 | Ruby on Rails

railsでpdfに出力 #gemfile gem 'wkhtmltopdf-binary' gem 'wicked_pdf' #config/initializers/wicked_...

Animate on scroll library aos

2017/02/12 | Ruby on Rails

scrollとanimateを使う際にwow.jsとanimate.cssを使っていたのですが、最近見つけた両方を兼ね備えたlibraryのaosを見つけたので使ってみました。 railsに組み...

Railsに郵便番号で住所検索

2017/02/12 | Ruby on Rails

現在稼働しているRailsアプリに郵便番号入力で住所が表示されるようにしてほしいということで、調べてみました。 ajaxZip, jquery.jpostal.jsなどを調べていましたが、組み込...