在迁移中使用references :foo
时,生成的列称为foo_id
。在执行references :foo
和执行integer :foo_id
之间是否存在任何差异?也许有些事情会在数据库层面强制执行关系?
答案 0 :(得分:8)
结果与您的具体情况相同;你是对的。但references
允许使用:polymorphic => true
选项,该选项会自动将foo_type
列创建为表格中的字符串。
从语义上讲,如果您尝试使迁移更好地反映数据库中表之间的关系,references
会更好。
答案 1 :(得分:2)
@ Mike的回答很好地解释了references
的含义。但是,通常最好不要将迁移过度与AR关联过度联系起来。特别是,如果在从版本控制更新应用程序之前运行迁移,则在部署应用程序时可以使用各种pickle。在咬你之前,这不是什么大不了的事: - )