如何在Rails中管理非自增主键?

4

在使用Rails时,我有很多情况需要使用非自增主键。

例如:A和B之间存在一对一的关系。B描述了添加到A的某些特定功能,因此没有A就不存在B。因此我们有:

A有一个B
B属于A

自然的想法是将B.A_id作为主键。所以我尝试在迁移中使用create_table b, :id=>false,并在B的模型中使用set_primary_key :a_id,但它不会在数据库中创建实际的主键。而且我希望它们(以及外键)存在,因为数据库不仅仅被这个Rails应用程序使用。

如果我使用execute创建主键,它们不会出现在schema.rb中,这很糟糕。现在我正在考虑解决方法:只要该列有唯一约束条件,我就可以在迁移中使用Rails的add_index来替代PK约束,这似乎更加优雅。

有什么建议吗?


1
为什么不使用基于SQL的模式?当然,它不是数据库无关的,但数据库无关性被高估了,特别是当它阻止你完成任务时。 - Omar Qureshi
1个回答

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接