从表中解析值的哈希值

时间:2014-12-16 10:40:04

标签: ruby-on-rails hash

我正在Rails中编写AWS联合代理。这意味着我在本地ActiveDirectory上使用net-ldap抓取一些组,并希望将它们与列表进行比较并查找匹配项。我的NetLDAP-searchresult就是这个哈希:

[#<Net::LDAP::Entry:0x000000048cfdd0 @myhash={:dn=>["CN=Username,OU=Support,OU=mycompany ,OU=Organisation,DC=mycompany,DC=com"], :memberof=>["CN=My AWS Groupname,CN=Receiver,CN=Users,DC=mycompany,DC=com"]}>] 

现在我想解析这个哈希并在本地“groups”表中查找匹配项。它看起来像是:

Name               AWS-Role
My AWS-Groupname   Some Group
AWS-Othergroup     Some Other-Group

我有一个群组模型。 什么是最佳实践方法?我以前从未做过这样的事情。我会在这里使用正则表达式吗?我是否通过所有表循环组?有什么方法可以做到这一点?

已编辑以获取更多信息

1 个答案:

答案 0 :(得分:1)

我将在这里假设一些事情,因为我不知道从哪里获得LDAP搜索结果,但假设您的哈希看起来像这样:

修改: 根据其他信息:

// Example
require 'net-ldap'

entry = Net::LDAP::Entry.new
entry.dn = ["CN=Username,OU=Support,OU=mycompany ,OU=Organisation,DC=mycompany,DC=com"]
entry[:memberof] =["CN=My AWS Groupname,CN=Receiver,CN=Users,DC=mycompany,DC=com"]
name = entry.memberof.first.split(',').first.gsub('CN=', '')

假设您有一个名为Group的模型映射到此“groups”表,您可以执行以下操作:

Group.where(name: name).any?

如果您发现任何结果,则表示您在表格中有匹配项。 但这完全取决于表结构和哈希。为了正确回答你的问题,我需要看看你在Rails中有哪些对象,以及你的Hash结构是什么样的。

修改 根据收到的反馈更新了我的答案。使用代码风险自负。