43
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

テーブル名からカラム情報を取得

Last updated at Posted at 2013-07-12

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がかえってくるところしか見たことがない。
もう少し検証してみなければ。

43
40
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?