在Rails上创建表时需要创建外键吗?

Már*_*rte 8 ruby-on-rails foreign-key-relationship scaffold

我现在开始使用Rails,我在论坛中查看,但我找不到任何可以解决我问题的方法.

在这里,我有一个分类表,它只有一个列的名称(类别中没有重复)所以我希望名称是主键,然后我有一个名称,main_photo,描述的产品表我想说一个产品只有一个类别,我是否需要在产品中添加一个名为category的列作为外键?

一个类别被认为有很多产品.

然后在类别模型中我如何说名称是主键,我如何在产品类别和类别中的主要名称之间进行对应?

dna*_*oli 15

Active Record中的外键约束不经常使用,因为Active Record背后的意识形态说这种逻辑应该属于模型而不属于数据库 - 数据库只是一个愚蠢的存储: http://guides.rubyonrails .org/migrations.html #active-record-and-referential-integrity.

Rails的方法是在所有表上都有一个ID列,包括Categories表,在Products表中,有一个名为Category_ID的列.请注意,表名是复数.

然后在您的模型中定义实体Product和Category之间的关系.阅读文章A Active Record Association指南,它将回答您的所有问题,尤其是第2.1,2.2和3.3节.

  • 如果您使用category:references作为参数生成迁移,或者只是将`t.references:category`添加到迁移中,它可以自动添加category_id. (5认同)

tee*_*tee 6

在数据库中有外键有许多正当理由.请参阅Rails是否需要数据库级约束?

如果你想轻松地将外键添加到你的Rails应用程序,我推荐Foreigner.