Rails 3 - 外键 - 字符串与符号

时间:2011-10-18 00:14:53

标签: ruby-on-rails ruby ruby-on-rails-3 foreign-keys

我正在学习Rails,今晚我遇到了一个有趣的问题。

我正在创建一个需要外键索引的迁移: Migration with Symbol

每当我运行'bundle exec rake db:migrate'时,我都会收到此控制台错误: Migration Error

在 创建引用之前,它似乎正在尝试创建索引

我相信这是因为当我将“主题”引用更改为符号时:

Migration with symbol instead of string

迁移然后突然按预期工作! enter image description here

这可能只是因为我是一个全新的事实,但是Ruby实际上处理的符号比字符串更快?

好奇 - 谢谢!

1 个答案:

答案 0 :(得分:2)

这不是“更快”的问题,也不是速度问题。迁移按顺序一次执行一行。您之前指定的方式根本没有正确创建列,因此当它到达您创建索引的行时,名称不匹配。

我的猜测是,使用字符串版本时,它创建的列名称与拼写完全相同,“subject”与使用符号时的subject_id相对。无论哪种方式,在创建列和构建索引之间肯定存在名称不匹配。

在迁移过程中始终使用符号,您应该没问题。在迁移之后,请务必检查您的schema.rb文件,或使用GUI工具浏览数据库,以确保按照您期望的方式创建列,并使用您认为的数据类型,并且您应该做得很好。