2012-04-21 10 views
9

Sto usando ruby ​​e activerecord per ottenere informazioni su una tabella mysql.Posso ottenere le informazioni su tabella, colonna e tipo da un modello?

Speravo di ottenere queste informazioni direttamente dalla mia classe modello, è possibile?

Dire che ho il mio modello:

class Product < ActiveRecord::Base 
end 

E 'ora possibile per me di ottenere l'indicazione:

1. mysql table 
2. columns 
3. column types 

Oppure devo guardare da qualche parte più in profondità il modulo ActiveRecord per ottenere questo ?

risposta

20
  1. Product.table_name
  2. Product.column_names
  3. Product.columns_hash['title'].type
+0

Se si usa il 3. con 'id' 'Product.columns_hash [" id "]. Type' fornisce': intero' C'è un modo per trasformarlo in un 'Integer' ?? – mariowise

+0

'Product.columns_hash [" id "]. Type.to_s.classify.constantize' –

2

Dai un'occhiata alla ActiveRecord::ModelSchema::ClassMethods:

class Product < ActiveRecord::Base 
    self.table_name # 1 
    self.columns # 2 
    self.columns_hash['name'].type # 3 
end 
+0

Sei sicuro di quello ultimo? I documenti dicono che 'columns' è un array, non un hash. – jdoe

+0

Scusa, hai ragione - l'ho corretto. – DanS

Problemi correlati