【问题标题】:`default_scope order('created_at DESC')` works, but `Model.order('created_at DESC')` doesn't work with kaminari`default_scope order('created_at DESC')` 有效,但 `Model.order('created_at DESC')` 不适用于 kaminari
【发布时间】:2014-02-13 11:14:23
【问题描述】:

我正在使用 kaminari 在 Rails 中进行分页。

如果我在模型中设置default_scope order("created_at DESC"),它会按预期工作。

但是当我像这样在控制器中写入时,DESC 被忽略并且页面按升序排序。 (在这种情况下,我不在模型中写default_scope。)

  def index
    @words = Word.order("created_at DESC").page params[:page]
  end

我做错了什么?

【问题讨论】:

  • 看起来没有什么问题。在你看来可能是什么?
  • 我想,没什么特别的。比如@words.each do |word|等等。
  • 所以运行 Word.all 为您提供了正确的默认范围,但运行您键入的内容却没有?无论如何,只做 Word.page(params[:page]) 应该没问题,因为实现了默认范围?如果你真的不能只执行一个 .reverse 来让事情现在正常工作

标签: ruby-on-rails kaminari


【解决方案1】:

在这种情况下,如果要忽略以前的范围,它会同时应用两个命令,然后使用:

@words = Word.unscoped.order("created_at DESC").page params[:page]

【讨论】:

  • 对不起,我应该说得更清楚。当我在控制器中写入时,我不写入模型文件。
  • 没有关于代码位置默认范围适用于任何地方的问题
猜你喜欢
  • 2014-07-25
  • 2021-12-17
  • 1970-01-01
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 2021-07-14
相关资源
最近更新 更多