Rails组合了两个不同的活动记录对象

时间:2017-02-08 10:39:27

标签: ruby-on-rails

我有两个表位于两个不同的数据库中。

示例:

位于 db1 的用户,其属性为 user_id和名称

位于 db2 的审核,其属性为 id和user_id

User.find_by_sql("SELECT * FROM users")

Audit.find_by_sql("SELECT * FROM audits")

如何基于user_id

组合这两个查询结果的结果

预期输出行=> user_id audit_id名称

1 个答案:

答案 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

在地图中,您可以使用您喜欢的任何内容构建哈希