Rails:'references:foo'和'integer:foo_id'之间有区别吗?

时间:2011-01-19 15:09:49

标签: ruby-on-rails activerecord migration

在迁移中使用references :foo时,生成的列称为foo_id。在执行references :foo和执行integer :foo_id之间是否存在任何差异?也许有些事情会在数据库层面强制执行关系?

2 个答案:

答案 0 :(得分:8)

结果与您的具体情况相同;你是对的。但references允许使用:polymorphic => true选项,该选项会自动将foo_type列创建为表格中的字符串。

从语义上讲,如果您尝试使迁移更好地反映数据库中表之间的关系,references会更好。

答案 1 :(得分:2)

@ Mike的回答很好地解释了references的含义。但是,通常最好不要将迁移过度与AR关联过度联系起来。特别是,如果在从版本控制更新应用程序之前运行迁移,则在部署应用程序时可以使用各种pickle。在咬你之前,这不是什么大不了的事: - )