数据组装与缓存例子

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值