数据导入,主键选择和Active Record最佳实践

时间:2013-10-18 07:24:42

标签: database ruby-on-rails-3 activerecord import primary-key

我已多次阅读过使用Active Record中的'自定义素数键'(除了对象的id)不是一个好习惯,必须非常小心地使用它。

这是我的问题:

我正在构建一个Rails应用程序。我必须在我的数据库中导入:products:countries:regions等对象....

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

  1. 使用“代码”作为主键有什么危险?
  2. 是否有'智能'方法来管理CSV导入以便对象 总是保持相同的身份?
  3. 我的案例中最佳做法是什么?
  4. 感谢。

1 个答案:

答案 0 :(得分:0)

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

您必须使用Region.find_by_code(code)Region.find_by_code!(code)来进行查询。如果未找到记录,则bang方法(带有'!'的方法)将引发异常,类似于Region.find(id)