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

我有很多情况,我希望在使用Rails时有一个非自动增量主键。

示例:我在A和B之间有一对一的关系.B描述了添加到A的一些特定function,因此在没有A的情况下不能存在。所以我们有:

A有一个B.
B属于A.

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

如果我用执行创建主键,它们不会落在schema.rb中,这会受到伤害。 现在我正在考虑一种解决方法:只要对该列有唯一约束,我就可以没有PK约束,所以我可以在迁移中使用Rails的add_index,这似乎更优雅。

有什么建议?

StackOverflow上一个非常类似的问题建议尝试类似:

 create_table(:b, :id => false) do |t| t.integer :a_id, :options => 'PRIMARY KEY' end