【发布时间】:2012-12-21 06:01:23
【问题描述】:
我想在生成模型的过程中通过git-bash定义rails中varchar的大小,例如name varchar(20)、age varchar(6)。
我在堆栈上搜索但找不到任何答案。
【问题讨论】:
标签: mysql ruby-on-rails ruby-on-rails-3 varchar
我想在生成模型的过程中通过git-bash定义rails中varchar的大小,例如name varchar(20)、age varchar(6)。
我在堆栈上搜索但找不到任何答案。
【问题讨论】:
标签: mysql ruby-on-rails ruby-on-rails-3 varchar
在创建列时,有许多选项记录在 column 方法中。在进行后续修改时,它们也适用于add_column。
制作更有限的列最简洁的方法是:
t.string :name, :limit => 20
t.string :age, :limit => 6
请注意,在您的数据库中施加这样的限制是非常不寻常的,更好的解决方案是使用validates 限制模型。例如:
validates :name,
:presence => true,
:length => { :maximum => 20 }
MySQL 倾向于在不告诉你的情况下截断太长的值,因此没有长度限制最终会导致数据丢失,尤其是长度如此短的情况下。
请记住,数据库中的VARCHAR 列是可变长度的,因此VARCHAR(255) 中的十个字符值与VARCHAR(20) 相比没有存储优势。
【讨论】:
VARCHAR(255) 对 Ruby 的影响为零。通过扩展,您是否希望 LONGTEXT 自动占用 2GB 内存?