Rails:用于创建固定长度 char(12) 列的迁移
通过 Rails 迁移定义固定长度 SQL 列(例如 CHAR(12))的最佳方法是什么?
为什么模型不应该处理这个问题是因为 char() 与 varchar() 的性能不同,我想避免在数据库中注入原始 SQL。
编辑:我知道 :limit 修饰符,但是该字段仍然是 varchar (这对性能不利)并且不允许最小大小。
What is the best way to define a fixed-length SQL column (CHAR(12) for instance) through a Rails migration ?
Why this should not handled by the model is because of the performance of char() vs varchar(), and I'd like to avoid injecting raw SQL in the database.
Edit : I know the :limit modifier, however the field is still varchar (which is bad for performance) and does not allow a minimum size.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果 Rails 不理解列类型,它会将其直接传递到数据库。因此,如果您想要 char 而不是 varchar,只需将: 替换
为:
当然,这可能会也可能不会使您的迁移不可移植到另一个数据库。
(归功于http://laurelfan.com/2010/1/26/special -mysql-types-in-rails-migrations)
If Rails doesn’t understand the column type, it’ll pass it straight through to the database. So if you want a char instead of varchar, just replace:
With:
Of course, this may or may not make your migrations non-portable to another database.
(credit to http://laurelfan.com/2010/1/26/special-mysql-types-in-rails-migrations)
您可以在迁移文件中使用带有限制选项的字符串类型,如下所示:
You can use string type with limit option in your migration file like this:
对于数据库特定类型,我们现在可以使用:
对于完整的示例:
For a database specific type, we can now use:
And for a complete example: