有没有办法从 ActiveRelation 对象中删除分页?
假设我们的控制器中有 @posts = Post.published.per(10).page(params[:page])
。稍后我们需要更新所有已发布的帖子 (Post.published
)。
应该如何删除分页?
@posts.limit(false).offset(false)
似乎可以解决问题,但我认为应该有其他方法,更多高级方式(类似于@posts.without_pagination)。
Let's say we have @posts = Post.published.per(10).page(params[:page])
somewhere in our controller. Later on we need to update all published posts (Post.published
).
How should one remove the pagination?
@posts.limit(false).offset(false)
seems to do the trick but I think there should be some other way, a more high-level way (something like @posts.without_pagination
).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于
page
方法是由 kaminari 提供的,我不确定 kaminari 是否也提供类似without_pagination
的方法。但如果您愿意,您始终可以这样做:
或者您可以将该方法提取到模块中并将该模块包含到 ActiveRecord::Base 中,以便每个模型都有该方法。
已编辑,
谢谢 tfwright 的指出。可以使用
. except(:limit, :offset)
这对于后来的人来说应该更好。As the
page
method is provided by kaminari, I do not sure if kaminari provide also something likewithout_pagination
.But if you like, you could always do this:
or you could extract the method out to a module and include the module into ActiveRecord::Base so that every model has the method.
Edited
Thank you tfwright for pointing out. Could use
.except(:limit, :offset)
which should be much better for later comers.