在rails中定义MySQL的varchar长度

时间:2012-12-21 06:01:24

标签: mysql ruby-on-rails ruby-on-rails-3 varchar

我想在rails中定义varchar的大小,例如name varchar(20),age varchar(6),在生成模型的过程中通过git-bash定义。

我在堆栈上搜索但找不到任何答案。

1 个答案:

答案 0 :(得分:31)

创建为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)中的十个字符值没有存储优势。