2013-03-04 125 views
0

我有Flickr API的響應,列出了我所有集合的樹。遞歸方法

我基本上需要一個遞歸方法來遍歷並將每個集合添加到我的數據庫。

我的頭完全旋轉。

這是我有:

def add_collection(options = {}) 
    Collection.create!({ 
     :flickr_id => options['id'], 
     :title  => options['title'], 
     :description => options['description'], 
     :primary  => options['primary'] 
     }) 
    end 

    def self.complete_grab 
    collections = Flickr.get_collection_tree 
    collections.each do |c| 
     add_collection({id: c.id, title: c.title, description: c.description, primary: c.primary}) 
     if c.has_children? 
     // 
     end 
    end 
    end 

有什麼想法?我接近解決它嗎?

回答

2

我不熟悉的Flickr的API,但我認爲你正在尋找粗糙的結構是:

def complete_grab 
    add_all(Flickr.get_collection_tree) 
end 

def add_all(collections) 
    collections.each do |c| 
     add_collection({id: c.id, title: c.title, description: c.description, primary: c.primary}) 
     add_all(c.children) 
    end 
end 

這假定每個集合有一個名爲兒童成員包含多個子集。

+0

這很完美。我需要開始比我更簡單地思考。 我現在堅持使用我從Flickr獲取的數據。它是一個數組和哈希值的混合體,每個開始和結束的位置以及如何訪問每個數組都是棘手的。 – rctneil 2013-03-05 18:03:14