`

数据组装与缓存例子

    博客分类:
  • RUBY
 
阅读更多
codeing by 志远.于

module Extract
  def get_industries_child(list)
    if list.present?
      list.map{|c|
          {
            child_name:c.name,
            child_name_cn:c.name_cn,
            industry_id:c.industry_id,
            id:c.id
          }
      }
    else
      []
    end
  end

  #行业及产品类型
  def get_industries_list
    Industry.all(:include => :products).map {|item|
      {
        parent_name:item.name,
        parent_name_cn:item.name_cn,
        id:item.id,
        children:self.get_industries_child(item.products)
      }
    }
  end

  def get_interests_child(list)
    if list.present?
      list.map{|c|
          {
            child_name:c.name,
            child_name_en:c.name_en,
            audience_id:c.audience_id,
            parent_id:c.parent_audience_id
          }
      }
    else
      []
    end
  end

  #兴趣标签获取兴趣及子项
  def get_interests_list
    BshareAudience.find_all_by_parent_audience_id(0).map {|item|
      {
        parent_name:item.name,
        parent_name_en:item.name_en,
        audience_id:item.audience_id,
        parent_id:item.parent_audience_id,
        children:self.get_interests_child(BshareAudience.find(:all, :conditions => ["parent_audience_id = ? ", item.audience_id]))
      }
    }
  end
 
  #缓存兴趣列表
  def get_interests_cache
    self.cache("INTERESTS_CACHE"){self.get_interests_list}
  end

  #缓存媒体列表
  def get_interests_cache
    self.cache("INDUSTRY_CACHE"){self.get_industries_list}
  end

  def cache(key, expires_in=5.minute, &get_val_block)
    _cache = Rails.cache
    _key = key.to_sym
    _val = _cache.fetch(_key)
    if _val.nil?
      _val = get_val_block.call
      _cache.write(_key, _val, expires_in: expires_in)
    end
    _val
  end
 
end
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics