对具有加密主键的模型使用 has_one 关联

Using of has_one association for model with encrypted primary key

我有 AddressZipCode 型号。 Address 模型有 encrypted_post_code 字段,ZipCodecode 字段。我想在 has_one 关联的帮助下使用指定字段绑定 Address 记录和 ZipCode 记录。目前我需要它来使用诸如包含、预加载、eager_load 等 ActiveRecords 功能

很遗憾,地址记录的所有字符串字段都已加密(这是客户的要求)。我不能使用 has_one :zip_code, primary_key: :post_code, foreign_key: :code,因为我在地址 table 中没有 post_code 字段,它只包含 encrypted_post_code 字段。

请指教如何解决这个问题。

我认为您的客户实际上并不了解加密的好处。但是,这并不重要,因为您的数据库应该通过 id 而不是加密的邮政编码进行关联。

因此,您的邮政编码 table 可能有列 id, encrypted_post_code,然后地址只有一个 postcode_id 字段,并以这种方式进行连接。这样你就可以完全避免处理加密的邮政编码,直到你需要找出真正的邮政编码是什么,此时你可以通过关联查找并解密它。