空飛ぶとんジニア

平凡なエンジニアが日々関心を持ったことや学んだこと、感じたことを吐き出すブログ。緊張すると涙がでるのが特徴です。

忘れがち? rails generateでモデル/マイグレーションファイルを作成する時に指定できる型

背景

開発初期はめっちゃ触るんですけど、運用にまわって一段落したらほとんど触らないですよね〜
毎回忘れるのでメモです。

環境

今回テストしてる環境は
* Rails4.2.6
です。

rails generate/rails gで指定できる型

ヘルプを実行してみた内容のまとめなので、手元に環境がある方はそちらの方が正確です。

$bundle exec rails g model --help

Articleモデルを作成する際のサンプルはこのような感じです

$bundle exec rails g model article title:string description:text

上の例で言うと
title => フィールド名
string => 型
になります。

指定できる型は以下です

integer
primary_key
decimal
float
boolean
binary
string
text
date
time
datetime

型を指定できる部分には、[関連]を指定できたりします。
例えば[ユーザー(User)と記事(Article)は1対多]の関連実現するためには

references

という型を指定します。
こんな感じ

$bundle exec rails g model article user:references

オプション

integer, string, text, binaryは字数制限等のオプションもつけれます。

$bundle exec rails g article description:text{1000}

decimalは {10, 2}のように指定すると精度の指定ができるみたいです。

あと関連の場合はpolymorphicなんてオプションが用意されています。

$bundle exec rails g model article host:references{polymorphic}

(polymorphicについて簡単に説明すると記事を書くのはユーザーだったり、企業だったりするよね!そいつらをhostと呼ぶことにしよう!的なやつです)

もう一つのオプション

型の後ろに指定できるオプションが

uniq
index

です。

$bundle exec rails g article title:string:uniq

タイトルかぶっちゃやーよ的なやつです。
あとindexを指定できるオプションが2つめコロンの後に指定できます。

まとめ

ざっとrails g modelを実行する時に毎回検索してることをまとめてみました。
あくまでここで紹介したコマンドはmigrationファイルを作成するためのものなので、コマンドを使ってテンプレートを作成せずにおれはいけるぜ!という人は、全く気にしなくていい内容です:)
調べててはじめて知ったのですが、-pオプションを使うとdry-runできるらしい!!いいね!!

ではではm( )m

Railsに関する過去記事はコチラ!

blog.ryogoto.com blog.ryogoto.com