users
というテーブルに定義されているカラム情報を取得する方法のメモ。
使うAPI: Ruby on Rails API columns()
テーブル名からモデルクラスを参照し、それに.columns
メソッドを使うと取得できる。
get_columns.rb
# テーブル名から、定義されているすべてのカラム定義を取得
Module.const_get('users'.classify).columns
# 特定のカラムの情報を取得(例えば `id`)
Module.const_get('users'.classify).columns['id']
# 特定のカラムから定義の一部を取得
col = Module.const_get('users'.classify).columns['id']
col.type # データ型を取得
カラムの定義の取得はこんなメソッドが用意されているっぽい。
コレで全てかわからんとです… (´・ω・`)
-
.name
: カラム名 -
.sql_type
: SQLでのデータ型 -
.type
: データ型 -
.null
: NOT NULL制約 -
.limit
: カラム数制限(?) -
.precision
: 数値桁数 -
.scale
: 小数点以下桁数 -
.default
: デフォルト値 -
.primary
: Primary制約 -
.coder
: エンコード
コメント欄で教えていただきました。
columnsメソッドの詳細はこちらに書いてありました。
Class: ActiveRecord::ConnectionAdapters::Column
.coder
の結果、今のところnil
がかえってくるところしか見たことがない。
もう少し検証してみなければ。