2013-03-04 176 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