通过Rails迁移定义固定长度SQL列(例如CHAR(12))的最佳方法是什么?
为什么模型不应该处理这个问题,是因为char()和varchar()的性能,我希望避免在数据库中注入原始SQL.
编辑:我知道:limit修饰符,但是字段仍然是varchar(这对性能不利),并且不允许最小大小.
通过Rails迁移定义固定长度SQL列(例如CHAR(12))的最佳方法是什么?
为什么模型不应该处理这个问题,是因为char()和varchar()的性能,我希望避免在数据库中注入原始SQL.
编辑:我知道:limit修饰符,但是字段仍然是varchar(这对性能不利),并且不允许最小大小.
如果Rails不理解列类型,它会直接将其传递给数据库.因此,如果您想要char而不是varchar,只需替换:
t.column :token, :string
与:
t.column :token, "char(12)"
当然,这可能会也可能不会使您的迁移无法移植到另一个数据库.
(计入http://laurelfan.com/2010/1/26/special-mysql-types-in-rails-migrations)