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

kdt*_*kdt 7 migration activerecord ruby-on-rails

当我references :foo在迁移中使用时,将调用生成的列foo_id.在做references :foo和做之间实际上有什么区别integer :foo_id吗?也许在幕后发生了一些事情来强制执行数据库级别的关系?

Mik*_*ski 8

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

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