我现在开始使用 Rails,我查看了论坛,但我没有找到任何可以解决我的问题的东西。
在这里,我有一个 Category 表,它只有一个列的名称(类别中没有重复)所以我希望 name 作为主键,然后我有一个 Product 表,它有 name、main_photo、description我想说一个产品只有一个类别,我需要在产品中添加一个名为类别的列作为外键吗?
一个类别应该有许多产品。
那么在类别模型中我如何说名称是主键,以及如何在类别中的假定主键名称与产品中的类别之间进行对应?
我现在开始使用 Rails,我查看了论坛,但我没有找到任何可以解决我的问题的东西。
在这里,我有一个 Category 表,它只有一个列的名称(类别中没有重复)所以我希望 name 作为主键,然后我有一个 Product 表,它有 name、main_photo、description我想说一个产品只有一个类别,我需要在产品中添加一个名为类别的列作为外键吗?
一个类别应该有许多产品。
那么在类别模型中我如何说名称是主键,以及如何在类别中的假定主键名称与产品中的类别之间进行对应?
Active Record 中的外键约束不经常使用,因为 Active Record 背后的思想认为这种逻辑应该属于模型而不是数据库 - 数据库只是一个愚蠢的存储: http://guides.rubyonrails .org/migrations.html#active-record-and-referential-integrity。
Rails 方法是在所有表(包括 Categories 表)上都有一个 ID 列,在 Products 表中,有一个名为 Category_ID 的列。请注意,表名是复数形式。
然后在您的模型中定义实体产品和类别之间的关系。阅读文章A Guide to Active Record Associations,它将回答您的所有问题,尤其是第 2.1、2.2 和 3.3 节。
在数据库中有外键有很多正当理由。请参阅Rails 是否需要数据库级约束?
如果您想轻松地将外键添加到 Rails 应用程序,我推荐Foreigner 。