スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【Rails】enum型でカラム名を定義すると、scopeが自動生成される

こんにちは、mahです。

このブログでは、僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、ノウハウなどを書いていきます。


今回は、

  • enum型でカラム名を定義すると、scopeが自動生成される

についてです。


概要


enumで定義したカラム名は、そのまま

モデル.where句の検索条件

のようにする事ができます。


なので、

enumで定義したカラム名のscopeは自分で定義する必要はありません。


参考リンク


Rails5 から enum 使う時は_prefix(接頭辞)_suffix(接尾辞)を使おう - Qiita



enum status: { deleted: -1, left: 0, real: 1 }, _prefix: true

というenumを定義している場合。


Hoge.status_deleted
Hoge.status_left
Hoge.status_real

のように検索出来ます。


検証


Railsコンソールで確認します。

irb(main):004:0> Hoge.status_deleted
# リレーションオブジェクトが返る。
=> #<ActiveRecord::Relation [#<Hoge id: 4, name: "hoge", status: 'deleted']


上記は、下記と同じです。

Hoge.where(status: :real)
Hoge.where(status: :left)
Hoge.where(status: :deleted)


おまけ


インスタンスに対しては、

status_deleted? => 論理値を返す
status_deleted! => deletedに更新する。

のように、判定や更新が出来ます。




以上、

  • enum型でカラム名を定義すると、scopeが自動生成される

でした。


  • 「RubyやRailsってよくわからない」

という方は、

udemyというオンライン動画学習サービスを使って、学ぶことをオススメします★

はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう

はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう




このブログでは、僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、ノウハウなどを書いています。


  • フリーランスに興味がある

  • 今まさに活動している

という方は、下記の記事で、

  • 【実体験】高卒文系が1年でRailsのフリーエンジニアになった話

  • 【週3案件豊富 正社員並の保証】フリーランスエージェント**Midworks**を使ってみた感想

  • 【10倍効率化!?】プログラマの作業が鬼捗る【9つのグッズ】

を紹介していますので、よかったらチェックしてみてください。


www.malanka.tech

www.malanka.tech

www.malanka.tech






また、

駆け出しエンジニアに向けてのnoteを3月17日にリリースしました。

note.com


活躍出来るエンジニアになるためのマインドを、

ギュッと詰め込んだ、「実践型note」になってます。


  • 「IT転職を成功させたい!」

という方は是非チェックしてみてください。






最後までお読み頂きありがとうございました★

もしよかったらTwiiterのフォローもお願いします★