Rails - 使用原始 SQL 查询的加密数据存储
Rails - Encrypted Data Storage with Raw SQL Queries
我有用户 table 和赎回 Table。因此,出于安全原因,我们对我们的用户 table 电子邮件和移动专栏进行了加密。
用户 Table 加密前列:
id | mobile | email | name |
用户 Table 加密后的列:
id | name | email_ciphertext | mobile_ciphertext | email_bidx | mobile_bidx
User.rb
has_many :redemptions
Redemption.rb
belongs_to:用户
所以在一个地方我想获得兑换信息和用户详细信息。我在加密用户手机和电子邮件之前的查询是
Redemption.joins(:user).group('users.id, users.mobile').select('users.id AS uid, users.name AS uname, users.email AS uemail, users.mobile AS umobile, count(distinct(redemptions.id)) AS total)
所以这会给我用户和他们的兑换计数。现在我已经使用 Lockbox and BlindIndex 加密了我的数据并从用户 table 中删除了电子邮件和移动列,我应该采用什么方法来实现上述查询的相同结果。
如果您想要获取用户的兑换次数,您可以这样做:
redemptions_by_user_id = Redemption.joins(:user).group("users.id").distinct.count
然后在单独查询中查询用户信息。
users = User.where(id: redemptions_by_user_id.keys)
然后合并它们
users.each do |user|
puts "#{user.id} #{user.email} #{user.phone} #{redemptions_by_user_id[user.id]}"
end
我有用户 table 和赎回 Table。因此,出于安全原因,我们对我们的用户 table 电子邮件和移动专栏进行了加密。
用户 Table 加密前列:
id | mobile | email | name |
用户 Table 加密后的列:
id | name | email_ciphertext | mobile_ciphertext | email_bidx | mobile_bidx
User.rb
has_many :redemptions
Redemption.rb
belongs_to:用户
所以在一个地方我想获得兑换信息和用户详细信息。我在加密用户手机和电子邮件之前的查询是
Redemption.joins(:user).group('users.id, users.mobile').select('users.id AS uid, users.name AS uname, users.email AS uemail, users.mobile AS umobile, count(distinct(redemptions.id)) AS total)
所以这会给我用户和他们的兑换计数。现在我已经使用 Lockbox and BlindIndex 加密了我的数据并从用户 table 中删除了电子邮件和移动列,我应该采用什么方法来实现上述查询的相同结果。
如果您想要获取用户的兑换次数,您可以这样做:
redemptions_by_user_id = Redemption.joins(:user).group("users.id").distinct.count
然后在单独查询中查询用户信息。
users = User.where(id: redemptions_by_user_id.keys)
然后合并它们
users.each do |user|
puts "#{user.id} #{user.email} #{user.phone} #{redemptions_by_user_id[user.id]}"
end