对具有加密主键的模型使用 has_one 关联
Using of has_one association for model with encrypted primary key
我有 Address
和 ZipCode
型号。 Address
模型有 encrypted_post_code
字段,ZipCode
有 code
字段。我想在 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
字段,并以这种方式进行连接。这样你就可以完全避免处理加密的邮政编码,直到你需要找出真正的邮政编码是什么,此时你可以通过关联查找并解密它。
我有 Address
和 ZipCode
型号。 Address
模型有 encrypted_post_code
字段,ZipCode
有 code
字段。我想在 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
字段,并以这种方式进行连接。这样你就可以完全避免处理加密的邮政编码,直到你需要找出真正的邮政编码是什么,此时你可以通过关联查找并解密它。