1

假设我在 schema.rb 中有这个:

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

我想要一种方法来找出产品属性的数据库类型是什么。

就像是:Product.column_type(:name) => "string"

这可能吗?

4

1 回答 1

6
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

于 2012-06-14T18:35:26.970 回答