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

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

4

1 回答 1

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 的成员,其中包含多个子集合。

于 2013-03-04T23:09:32.587 回答