我想创建一个带有rails的页面来显示多个文档的嵌入文档。问题是每个文档的嵌入文档数量是可变的。
我有多个帖子,每个帖子最多可以有5张图片。图像是帖子的嵌入文档。
class Post
include Mongoid::Document
include Mongoid::Timestamps
field :text, :type => String
belongs_to :user
embeds_many :post_images
...
end
class PostImage
include Mongoid::Document
mount_uploader :image, PostImageUploader
embedded_in :post
end
现在我要创建一个页面来显示所有帖子的所有post_images。我想每页显示20张图片。我正在使用kaminari进行分页。
此代码将每页的帖子限制为20.但我想将post_images限制为每页20个:
@posts = Post.where({:user_id => @user._id, :post_images.exists => true}).desc(:created_at).page(params[:page]).per(20)
我该怎么做?
答案 0 :(得分:1)
我找到了一个解决方案,将post_images的数量限制为每页20个:
all_post_images = Post.where({:user_id => @user._id, :post_images.exists => true}).desc(:created_at).map{|p| p.post_images}.flatten
@post_images = Kaminari.paginate_array(all_post_images).page(params[:page]).per(20)