我已多次阅读过使用Active Record中的'自定义素数键'(除了对象的id)不是一个好习惯,必须非常小心地使用它。
这是我的问题:
我正在构建一个Rails应用程序。我必须在我的数据库中导入:products
,:countries
,:regions
等对象....
我打算通过CSV导入来实现。有时,我可能会重置一个表并使用更多数据完全重新导入它。使用代码而不是id作为primary_key
本来很方便,它可以确保我的数据库在重新导入数据后仍然保持一致。我只需要确保每次导入日期时始终保持相同code
(这比尝试保持相同id
更容易。)
感谢。
答案 0 :(得分:0)
建议不要覆盖primary_key
,因为它可能会破坏一些Rails魔法。此外,您还必须编写猴子补丁才能使其正常工作。我建议创建一个名为code
的新列并将其编入索引。这样,无论导入多少次,您的代码都将始终相同。
您必须使用Region.find_by_code(code)
或Region.find_by_code!(code)
来进行查询。如果未找到记录,则bang方法(带有'!'的方法)将引发异常,类似于Region.find(id)
。