Suche senden
Hochladen
ActiveRecord::Enumのススメ
•
3 gefällt mir
•
3,332 views
豊明 尾古
Folgen
第100回 okayama.rb での発表資料です。 ActiveRecord::Enum便利だよって話。
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 14
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
便利なHerokuと active recordの 速度改善tips
便利なHerokuと active recordの 速度改善tips
豊明 尾古
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
Takahiro Iwase
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
Shuji Watanabe
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
Shuji Watanabe
クラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevio
クラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevio
smokey monkey
職場で使用しているOSSの開発に参加してみた!
職場で使用しているOSSの開発に参加してみた!
infinite_loop
株式会社インフィニットループ紹介資料
株式会社インフィニットループ紹介資料
infinite_loop
ぼっち開発からチーム開発へ(仮)
ぼっち開発からチーム開発へ(仮)
Yuki Maeto
Empfohlen
便利なHerokuと active recordの 速度改善tips
便利なHerokuと active recordの 速度改善tips
豊明 尾古
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
Takahiro Iwase
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
Shuji Watanabe
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
Shuji Watanabe
クラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevio
クラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevio
smokey monkey
職場で使用しているOSSの開発に参加してみた!
職場で使用しているOSSの開発に参加してみた!
infinite_loop
株式会社インフィニットループ紹介資料
株式会社インフィニットループ紹介資料
infinite_loop
ぼっち開発からチーム開発へ(仮)
ぼっち開発からチーム開発へ(仮)
Yuki Maeto
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方
Mikiya Okuno
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
土岐 孝平
大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側
KLab株式会社
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
はじめてのWordPress勉強会 vol.01 Word Pressの概要
はじめてのWordPress勉強会 vol.01 Word Pressの概要
MoritaMasahiro
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
Mikiya Okuno
RDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考える
Mikiya Okuno
リレーショナルデータベースとの上手な付き合い方 long version
リレーショナルデータベースとの上手な付き合い方 long version
Mikiya Okuno
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法
Soudai Sone
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
鉄次 尾形
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
MongoDBの監視
MongoDBの監視
Tetsutaro Watanabe
Database qpstudy-okuno
Database qpstudy-okuno
Mikiya Okuno
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Mikiya Okuno
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
KLab株式会社
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
infinite_loop
20161206 re growth-tokyo-maroon1st
20161206 re growth-tokyo-maroon1st
宗 大栗
Aozorahack20161106
Aozorahack20161106
masayoshi takahashi
Jawsug北九州第4回勉強会
Jawsug北九州第4回勉強会
Yutaka Fujisaki
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
学 松崎
Railsのソースコードを読みはじめて変わったこと
Railsのソースコードを読みはじめて変わったこと
Shun Sakai
Weitere ähnliche Inhalte
Was ist angesagt?
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方
Mikiya Okuno
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
土岐 孝平
大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側
KLab株式会社
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
はじめてのWordPress勉強会 vol.01 Word Pressの概要
はじめてのWordPress勉強会 vol.01 Word Pressの概要
MoritaMasahiro
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
Mikiya Okuno
RDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考える
Mikiya Okuno
リレーショナルデータベースとの上手な付き合い方 long version
リレーショナルデータベースとの上手な付き合い方 long version
Mikiya Okuno
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法
Soudai Sone
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
鉄次 尾形
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
MongoDBの監視
MongoDBの監視
Tetsutaro Watanabe
Database qpstudy-okuno
Database qpstudy-okuno
Mikiya Okuno
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Mikiya Okuno
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
KLab株式会社
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
infinite_loop
20161206 re growth-tokyo-maroon1st
20161206 re growth-tokyo-maroon1st
宗 大栗
Aozorahack20161106
Aozorahack20161106
masayoshi takahashi
Jawsug北九州第4回勉強会
Jawsug北九州第4回勉強会
Yutaka Fujisaki
Was ist angesagt?
(20)
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
はじめてのWordPress勉強会 vol.01 Word Pressの概要
はじめてのWordPress勉強会 vol.01 Word Pressの概要
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
RDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考える
リレーショナルデータベースとの上手な付き合い方 long version
リレーショナルデータベースとの上手な付き合い方 long version
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
MongoDBの監視
MongoDBの監視
Database qpstudy-okuno
Database qpstudy-okuno
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
20161206 re growth-tokyo-maroon1st
20161206 re growth-tokyo-maroon1st
Aozorahack20161106
Aozorahack20161106
Jawsug北九州第4回勉強会
Jawsug北九州第4回勉強会
Ähnlich wie ActiveRecord::Enumのススメ
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
学 松崎
Railsのソースコードを読みはじめて変わったこと
Railsのソースコードを読みはじめて変わったこと
Shun Sakai
Phpstormをつかいはじめました〜序〜 #sa_study
Phpstormをつかいはじめました〜序〜 #sa_study
Hikari Fukasawa
Xmlrpcと品詞分解
Xmlrpcと品詞分解
Satoru Fujimori
Pythonでwebdriver
Pythonでwebdriver
株式会社 システムヨシイ
Reading 1st dRuby
Reading 1st dRuby
Koichi ITO
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
Kazuhiro Serizawa
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
Everforth Co., Ltd.
Herokuとrails
Herokuとrails
Shinichirou Nakamura
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Yuuki Takezawa
20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel
Masanori Hayashi
Flex入門
Flex入門
Shinjiro Watanabe
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hikari Fukasawa
Laravelのeloquent だけ入れた話
Laravelのeloquent だけ入れた話
Masataka Kono
How Would You Like Component Management System
How Would You Like Component Management System
Hidetaka Okamoto
React way at_eight
React way at_eight
Hideharu Okuma
Yapc2012ltthon
Yapc2012ltthon
Junya Murabe
Soft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイント
Shuichi Yukimoto
.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI
keitasudo1
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室
Yusuke Ando
Ähnlich wie ActiveRecord::Enumのススメ
(20)
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
Railsのソースコードを読みはじめて変わったこと
Railsのソースコードを読みはじめて変わったこと
Phpstormをつかいはじめました〜序〜 #sa_study
Phpstormをつかいはじめました〜序〜 #sa_study
Xmlrpcと品詞分解
Xmlrpcと品詞分解
Pythonでwebdriver
Pythonでwebdriver
Reading 1st dRuby
Reading 1st dRuby
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
Herokuとrails
Herokuとrails
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel
Flex入門
Flex入門
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
Laravelのeloquent だけ入れた話
Laravelのeloquent だけ入れた話
How Would You Like Component Management System
How Would You Like Component Management System
React way at_eight
React way at_eight
Yapc2012ltthon
Yapc2012ltthon
Soft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイント
.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室
Mehr von 豊明 尾古
OSS-DB 取得のススメ
OSS-DB 取得のススメ
豊明 尾古
Ormとの付き合い方
Ormとの付き合い方
豊明 尾古
Ecmascript2015とその周辺について
Ecmascript2015とその周辺について
豊明 尾古
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
豊明 尾古
Middlemanによる静的サイト作成術
Middlemanによる静的サイト作成術
豊明 尾古
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
豊明 尾古
Rails templateで開発の初速を上げよう
Rails templateで開発の初速を上げよう
豊明 尾古
KotlinAndroidLibを使ってみた
KotlinAndroidLibを使ってみた
豊明 尾古
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
豊明 尾古
Kotlinの紹介
Kotlinの紹介
豊明 尾古
Slimの紹介
Slimの紹介
豊明 尾古
Calabashでbddしようぜ
Calabashでbddしようぜ
豊明 尾古
Rubotoを試してみた
Rubotoを試してみた
豊明 尾古
Successful git
Successful git
豊明 尾古
アプリ内課金してみた
アプリ内課金してみた
豊明 尾古
Webデザイナーのためのandroid用レイアウト講座
Webデザイナーのためのandroid用レイアウト講座
豊明 尾古
Android 3.Xアプリを開発してみて
Android 3.Xアプリを開発してみて
豊明 尾古
Gae開発入門
Gae開発入門
豊明 尾古
ABC2011 Winter #jag4
ABC2011 Winter #jag4
豊明 尾古
初めてのC2DM
初めてのC2DM
豊明 尾古
Mehr von 豊明 尾古
(20)
OSS-DB 取得のススメ
OSS-DB 取得のススメ
Ormとの付き合い方
Ormとの付き合い方
Ecmascript2015とその周辺について
Ecmascript2015とその周辺について
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
Middlemanによる静的サイト作成術
Middlemanによる静的サイト作成術
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
Rails templateで開発の初速を上げよう
Rails templateで開発の初速を上げよう
KotlinAndroidLibを使ってみた
KotlinAndroidLibを使ってみた
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
Kotlinの紹介
Kotlinの紹介
Slimの紹介
Slimの紹介
Calabashでbddしようぜ
Calabashでbddしようぜ
Rubotoを試してみた
Rubotoを試してみた
Successful git
Successful git
アプリ内課金してみた
アプリ内課金してみた
Webデザイナーのためのandroid用レイアウト講座
Webデザイナーのためのandroid用レイアウト講座
Android 3.Xアプリを開発してみて
Android 3.Xアプリを開発してみて
Gae開発入門
Gae開発入門
ABC2011 Winter #jag4
ABC2011 Winter #jag4
初めてのC2DM
初めてのC2DM
ActiveRecord::Enumのススメ
1.
ActiveRecord::Enum のススメ 2015-08-22 @patorash 第100回 Okayama.rb
#okaruby
2.
自己紹介 名前:尾古 豊明 所属:株式会社リゾーム(岡山) TwitterID:@patorash 鳥取県大山町(旧中山町)出身。 米子東高校卒業後、愛媛大学に進学。松山で就職。 NWしてたけど25歳でPHPプログラマに強制転向。 独自フレームワーク、CakePHP、WordPressなどを経て Androidやって、1年個人事業主やって、チーム開発がしたくな りリゾームに入社。RubyとRailsを覚える。
3.
ActiveRecord::Enumとは? ● Rails4.1から追加されたModelで使える機能 ● 列挙型を透過的に使うことができる ●
その他、便利な機能が目白押し
4.
class Article <
ActiveRecord::Base enum status: [:draft, :published, :closed] end articlesテーブルにstatusというInt型のカラムが ある場合に使える。 何も指定しない場合は、先頭から順に0,1,2,... という値が自動的に付く。 これには罠があって、:draft, :publishedの間に 後で:reservedなどを新たに作った場合、今ま で:publishedが1だったのに、 なんと:reservedが1になってしまう。
5.
class Article <
ActiveRecord::Base enum status: { draft: 1, published:2, closed: 3 } end enumの値にHashを使えば、 任意の値を定義可能になる。 さきほどの、reservedを途中で加える場合など はこちらを使えば対応可能になる。
6.
便利機能その1:Scopeの自動付加 ● Article.draft ● Article.published ●
Article.closed のように、scopeを使える。 Article.where(status: 1)としなくてもいい。 なお、Article.where(status: :draft)はできない… Article.where(status: Article.statuses[:draft])とな る。
7.
便利機能その2:文字で指定可能 article = Article.new(status:
:draft) が可能になる。 どの数値がどのステータスを表していたかを覚え ていなくてもよい。 ならwhereでも使えたらいいのにね…。
8.
便利機能その3:確認メソッド article = Article.find
1 #公開済みの記事 article.published? # => true article.draft? # => false article.closed? # => false 確認メソッドが自動生成される。
9.
便利機能その4:更新メソッド article = Article.find
1 #公開済みの記事 article.closed! # 非公開に変更 更新メソッドが定義される
10.
便利機能その5:enum取得メソッド Article.statuses # => { “draft”
=> 0, “published” => 1, “closed” => 2 } 複数形にすれば定義のハッシュが取得可能。
11.
足りない機能もある… gem enum_helpを使おう!
12.
enum_helpとは? Viewのことを考慮した機能を追加してくれる ● 国際化対応(I18N) ● config/locales/enums.ja.ymlを定義 ja: enums: article: status: draft:
下書き published: 公開済み closed: 非公開
13.
enum_helpの便利機能その1 article = Article.find
1 #公開済みの記事 article.status # “published” article.status_i18n # “公開済み”
14.
enum_helpの便利機能その2 Article.statuses_i18n # => { “draft”
=> “下書き”, “published” => “公開済み”, “closed” => “非公開” }
Jetzt herunterladen