2015-07-08 4 views
1

У меня есть таблица, состоящая из двух полей, называемых follower_id и follow_id. Мне нужно создать запрос, который создает массив из каждой строки и помещает, что в общем массиве так, чтобы конец структура выглядит следующим образом:Создайте массив массивов из запроса базы данных в рельсах

"edges": [ 
    ["1", "2"], 
    ["1", "3"], 
    ["3", "4"], 
    ["3", "5"] 
    ] 

до сих пор у меня есть

def self.including_relationships 
    result={} 
    result["edges"] Relationship.all.each do |relationship| 
    result[""]= Relationship.select(:follower_id.to_s,:follower_id.to_s) 
    #the code here is called once for each user 
    # user is accessible by 'user' variable 
end 
    result 
end 

, но это приводит к :

edges: [ 
"[4, 3, 3, 4]", 
"[3, 4, 3, 4]" 
] 
+0

Это кажется как присоединиться к столу. Вы не должны напрямую обращаться к ним. Вы посмотрели на конструкции HABTM или 'has_many: through'? См. [Руководство по рельсам для ассоциаций] (http://guides.rubyonrails.org/association_basics.html). –

+0

Это не соединение –

ответ

2

Вы можете использовать map построить массив как:

Relationship.all.map { |r| [r.follower_id.to_s, r.followed_id.to_s] } 
+0

должен быть r.followed_id.to_s, но в противном случае работал. Cheers –

+0

В случае, если вы видите что-то в любом ответе, вы можете его отредактировать. Однако я установил его на 'r'. –

1

Попробуйте

relationships = Relationship.all.map { |r| [r.follower_id.to_s, followed_id.to_s] } 

results = {"edges": relationships } 
+0

Я получаю синтаксические ошибки - неожиданно: и} (хотя кажется сбалансированным?) –

+0

мой плохой, отредактированный мой ответ – jazzytomato

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