2017-02-08 41 views
0

我有两个表位于两个不同的数据库。Rails结合了两个不同的活动记录对象

例子:

用户居住在DB1与属性USER_ID和名称

审计居住在DB2与属性ID和user_id说明

User.find_by_sql("SELECT * FROM users") 

Audit.find_by_sql("SELECT * FROM audits") 

我如何基于用户结合这两个查询结果的结果_id

预计输出行数=>USER_ID audit_id名

+0

你是否设法从两个不同的数据库中获得结果?那么它只是一种将结果对象拼凑在一起的方式 –

回答

0

,如果你想这样做在Ruby中,你可以只使用映射

users = User.find_by_sql("SELECT * FROM users") 

audits = Audit.find_by_sql("SELECT * FROM audits") 

result = [] 
users.each do |u| 
    result << { 
    user_id: u.id, 
    name: u.name, 
    audits: audits.find_all { |a| a.user_id == u.id } 
    } 
end 

result 

# result will include all user audits 
在地图

你可以用任何你喜欢建立自己的散列

+0

在这里,用户变量会被审计填满。你能建议如何将用户和用户审计映射到用户吗? –

+0

@SitharaSuresh在回答中看到更新后的代码,这可能是您正在寻找的内容,如果您希望它与您指出的完全相同,那么将必须执行双重(嵌套)迭代 – mswiszcz

相关问题