tinyint(4)
在 Ruby on Rails 中,迁移中的以下代码在 MySQL 中创建类型列:
create_table :great_table do |t|
t.integer :step_position, :limit => 1 #tinyint
end
我将如何创建类型tinyint(2)
或的列tinyint(3)
?
tinyint(4)
在 Ruby on Rails 中,迁移中的以下代码在 MySQL 中创建类型列:
create_table :great_table do |t|
t.integer :step_position, :limit => 1 #tinyint
end
我将如何创建类型tinyint(2)
或的列tinyint(3)
?
对于 tinyint(2)
create_table :great_table do |t|
t.integer :step_position, :limit => 2
end
对于 tinyint(3)
create_table :great_table do |t|
t.integer :step_position, :limit => 3
end
根据我在gem的源代码中看到的,你不能:
# File activerecord/lib/active_record/connection_adapters/mysql_adapter.rb, line 540
540: def type_to_sql(type, limit = nil, precision = nil, scale = nil)
541: return super unless type.to_s == 'integer'
542:
543: case limit
544: when 1; 'tinyint'
545: when 2; 'smallint'
546: when 3; 'mediumint'
547: when nil, 4, 11; 'int(11)' # compatibility with MySQL default
548: when 5..8; 'bigint'
549: else raise(ActiveRecordError, "No integer type has byte size #{limit}")
550: end
551: end
您可以:tinyint
在 rails 迁移中用作列类型,并按之前的方式写入limit: 2
或limit: 3
写入。
使用您的示例:
create_table :great_table do |t|
t.tinyint :step_position, :limit => 1
end
应该管用。