【发布时间】:2013-08-01 20:07:37
【问题描述】:
在很多情况下,我希望在使用 Rails 时使用非自动增量主键。
示例:我在 A 和 B 之间存在一对一的关系。B 描述了添加到 A 的一些特定功能,因此没有 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 ,这看起来更优雅。
有什么建议吗?
【问题讨论】:
-
为什么不使用基于 sql 的模式?当然它不是数据库不可知论,但数据库不可知论被高估了,尤其是当它阻止你完成任务时。
标签: ruby-on-rails activerecord primary-key