0

我已经读过好几遍了,在 Active Record 中使用“自定义主键”(对象的 id 除外)不是一个好习惯,必须非常小心地使用它。

这是我的问题:

我正在构建一个 Rails 应用程序。我将不得不在我的数据库中导入诸如:products:countries、等的对象。:regions

我打算通过 CSV 导入来做到这一点。有时,我可能会重置一个表并使用更多数据完全重新导入它。使用代码而不是 idprimary_key会非常方便,它可以确保我的数据库在重新导入数据后仍然保持一致。我只需要确保code每次导入日期时始终保持相同(这比尝试保持相同更容易id)。

  1. 使用“代码”作为主键有什么危险?
  2. 是否有“智能”方法来管理 CSV 导入,以便对象始终保持相同的 ID?
  3. 就我而言,最佳做法是什么?

谢谢。

4

1 回答 1

0

不建议覆盖它,primary_key因为它会破坏 Rails 的一些魔力。此外,您必须编写猴子补丁才能使其工作。我建议创建一个名为code并索引它的新列。这样,无论您导入多少次,您的代码都将始终相同。

您将不得不使用Region.find_by_code(code)Region.find_by_code!(code)进行查询。如果找不到记录,bang 方法(带有“!”的方法)将引发异常,类似于Region.find(id).

于 2013-10-19T02:21:32.833 回答