递归方法

时间:2013-03-04 22:59:49

标签: ruby

我收到了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

有什么想法?我接近解决它吗?

1 个答案:

答案 0 :(得分: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

假设每个集合都有一个名为children的成员,其中包含多个子集合。