假设我在 schema.rb 中有这个:
create_table "products" do |t|
t.string "name",
t.text "description"
end
我想要一种方法来找出产品属性的数据库类型是什么。
就像是:Product.column_type(:name) => "string"
这可能吗?
假设我在 schema.rb 中有这个:
create_table "products" do |t|
t.string "name",
t.text "description"
end
我想要一种方法来找出产品属性的数据库类型是什么。
就像是:Product.column_type(:name) => "string"
这可能吗?
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