2017-02-08 4 views
0

У меня есть две таблицы, которые находятся в двух разных базах данных.Рельсы объединяют два разных объекта активной записи

Пример:

Пользователей проживающий в DB1 с атрибутами user_id и именем

аудита проживающим в db2 с атрибутами идентификатора и user_id

User.find_by_sql("SELECT * FROM users") 

Audit.find_by_sql("SELECT * FROM audits") 

Как я объединить результат этих двух результатов запроса на основе пользователя _id

Ожидаемые выходные строки =>user_id audit_id имя

+0

Вам удалось получить результаты из двух разных баз данных? это просто способ выщипывания объекта результата –

ответ

0

, если вы хотите сделать это в рубин вы могли бы просто использовать отображение

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

Смежные вопросы