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

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

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

一个类别可以提供许多产品。

那么在类别模型中我怎么说名称是主键,我怎样才能在产品类别和类别中对应的主键名称之间进行对应?

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

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

然后在您的模型中定义实体Product和Category之间的关系。 阅读文章“活动记录关联指南”,它将回答您的所有问题,尤其是第2.1,2.2和3.3节。

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

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