17

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

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

4

1 回答 1

34

在创建为该column方法记录的列时,有许多选项。它们也适用于add_column进行后续修改时。

制作更有限的列的最简洁方法是:

t.string :name, :limit => 20
t.string :age, :limit => 6

请注意,在您的数据库中施加这样的限制是非常不寻常的,更好的解决方案是使用validates. 例如:

validates :name,
  :presence => true,
  :length => { :maximum => 20 }

MySQL 倾向于在不告诉你的情况下截断太长的值,因此没有长度限制最终会导致数据丢失,尤其是长度如此短的情况下。

请记住,数据库中的列是可变长度的,因此 a与 aVARCHAR中的十个字符值没有存储优势。VARCHAR(255)VARCHAR(20)

于 2012-12-21T06:18:49.000 回答