【发布时间】:2011-06-23 20:59:44
【问题描述】:
我正在使用 Rails 2.3.4
我不是在寻找这个问题的具体答案,而是更多地寻找关于这个问题的一般指导。
在我们的 (MySQL) 数据库中,我们对个人身份信息 (PII) 进行加密,例如姓名、地址、电话号码等。但我一直收到动态查询请求。
例如,“您能否查询数据库以获取给定日期的条目值,但仅适用于区号列表中的用户”。
因此,选择标准包括一些 PII 加密数据,例如他们的电话号码的区号。
对于本次讨论,User 和 Entry 表具有以下感兴趣的字段:
User.id,User.phone
Entry.user_id,Entry.value,Entry.created_at
由于加密,我无法连接 SQL 客户端并以“简单”的方式进行查询,以从区号列表 (555,222,333) 中的用户获取 2010 年 11 月 21 日的所有条目,类似这样:
SELECT E.value,SUBSTR(U.phone,2,3) FROM users U INNER JOIN 条目 E ON E.user_id = U.id 日期(E.sent_at)='2010-11-21' AND SUBSTR(U.phone,2,3) in ('555','222','333')
我想在控制台中做一个查询,可能会给我类似的数据。
似乎加密字段不能用作选择标准,所以我猜测它们在显示它们之前不会被解密(而不是查询它们)。
我的蛮力痛苦的方式是以下多步骤过程:
- 选择所有活跃用户的ID和区号。 User.all(:select => "id, phone",:conditions => ["state='active'"])
- 做一个终端的屏幕抓取,
- 复制到文本编辑器,按摩,
- 粘贴到excel中,
- 使用 excel“过滤器”仅获取所需区号的用户 ID,
- 将它们粘贴到一个平面文件中,按摩成一个逗号分隔的列表,然后
- 粘贴到我的 SQL 客户端以通过 user_id 查询 SELECT * FROM entries WHERE user_id IN () and date(created_at) = ''。
“一定有更好的方法!”有什么建议?提前致谢,
【问题讨论】:
标签: ruby-on-rails console conditional-statements encryption