2012-06-14 86 views
1

比方說,我有這樣的schema.rb:獲取數據庫類型屬性

create_table "products" do |t| 
t.string "name",           
t.text  "description" 
end 

我想辦法,找出產品屬性的數據庫類型是什麼。

喜歡的東西:Product.column_type(:name) => "string"

這可能嗎?

回答

5
Product.columns_hash['name'].type # => :string 

請注意使用字符串而不是符號。

關於替代:sql_type

它映射邏輯Rails的類型,以特定的DB-數據類型。對於通用事物我不會推薦使用它:您的生產數據庫引擎將返回與開發數據庫中同一列的sql_type不同的值(儘管它們都是用相同的遷移文件)。例如布爾領域:

# SQLite mapping: 
:boolean => { :name => "boolean" } 
# MySQL mapping: 
:boolean => { :name => "tinyint", :limit => 1 } 

使用在這兩種情況下type給你:boolean,正如您在遷移指定。

+0

完美!你知道類型和sql_type屬性之間的區別嗎?我無法在文檔中找到它:http://rubydoc.info/docs/rails/3.0.0/ActiveRecord/ConnectionAdapters/Column – spike

+0

@spike更新了我的答案。 – jdoe

+0

太棒了,雖然巨大的文字有點嚇人:)。公認 – spike