有没有办法从 ActiveRelation 对象中删除分页?

发布于 2024-12-11 16:38:54 字数 282 浏览 1 评论 0原文

假设我们的控制器中有 @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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

日记撕了你也走了 2024-12-18 16:38:54

由于 page 方法是由 kaminari 提供的,我不确定 kaminari 是否也提供类似 without_pagination 的方法。

但如果您愿意,您始终可以这样做:

class Post < ActiveRecord::Base
  def self.without_pagination
    self.limit(false).offset(false)
  end
end

或者您可以将该方法提取到模块中并将该模块包含到 ActiveRecord::Base 中,以便每个模型都有该方法。

已编辑,

谢谢 tfwright 的指出。可以使用 . except(:limit, :offset) 这对于后来的人来说应该更好。

@posts = Post.publised.per(10).page(params[:page])
@posts = @posts.except(:limit, :offset)

As the page method is provided by kaminari, I do not sure if kaminari provide also something like without_pagination.

But if you like, you could always do this:

class Post < ActiveRecord::Base
  def self.without_pagination
    self.limit(false).offset(false)
  end
end

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.

@posts = Post.publised.per(10).page(params[:page])
@posts = @posts.except(:limit, :offset)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文