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
でも取得可能ですね。非常に便利です。