首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在子集合中获得有限的结果集

在子集合中获得有限的结果集
EN

Stack Overflow用户
提问于 2014-03-21 12:36:19
回答 2查看 96关注 0票数 0

我试图在一个子集合中获得有限的结果

基本上我有这个:

代码语言:javascript
复制
user = Model::User.find(token)
playlists = user.playlists
playlists.each do |playlist|
  criteria = playlist.tracks.limit(4)    #I Want to limit these to return max 4 tracks
  #the criteria is perfect here but the decorator still returns all the tracks
  #setting this criteria on the user saves the new tracks list limited by 4
  #like this:
  playlists[index].tracks = criteria
end

decorator = Decorator::PlaylistCollection.new(playlist)
response_with decorator

这不起作用,我的问题是如何限制每个播放列表返回最多4首曲目

我想要的是响应包含所有的播放列表,其中有4个曲目(还应该优化对mongo的查询)。

  • 显示所有播放列表
  • 每个播放列表包含最多4首曲目。
  • 必须防止蒙古/蒙戈对播放列表中所有曲目的调用

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-21 13:46:06

我得到了解决方案,mongoid创建了一个包含in (track_ids)的数组,其中包含列表中所有轨道的in。

通过重写track_ids而不是跟踪,没有任何查询或存储在mongoid中。

代码语言:javascript
复制
user = Model::User.find(token)
playlists = user.playlists
playlists.map do |playlist|
  playlist.track_ids = playlist.track_ids.take(4)
end

decorator = Decorator::PlaylistCollection.new(playlist)
response_with decorator
票数 0
EN

Stack Overflow用户

发布于 2014-03-25 21:40:58

我认为下面的代码可以做到这一点。

代码语言:javascript
复制
user = Model::User.find(token)
playlists = user.playlists[0..3]
decorator = Decorator::PlaylistCollection.new(playlist)
response_with decorator
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22558980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档