5

我在 Rails 4 应用程序中使用 paper_trail gem,我想设置默认排序顺序。papertrail 没有模型,只有控制器和初始化程序。

我可以把它放在哪里?我必须为它创建一个模型吗?

default_scope order('created_at DESC')
4

4 回答 4

7

好吧,我发现我可以在每个 do 块中使用 reverse 。

versions.reverse.each

因为我不需要比这更复杂的了,我想它现在就可以了。

于 2014-04-24T12:17:22.967 回答
7

还有重新排序命令。

http://apidock.com/rails/ActiveRecord/QueryMethods/reorder

versions.reorder('created_at DESC')

它将替换任何先前的订单,从而忽略 Papertrail 的预定义订单。

于 2016-09-05T07:02:22.763 回答
4

正确的方法是通过 unscope 删除先前的排序,然后根据需要进行设置:

http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-unscope

例如:

somethings.version.merge(PaperTrail::Version.unscope(:order)).order('created_at DESC')

这将为您提供正确排序的正确查询

于 2014-11-01T20:05:57.327 回答
-1

在 paper_trail gem 中找到version.rb 。我电脑上的目录如下所示。添加:

scope :by_date_desc, lambda { unscope(:order).order('created_at DESC') }

unscope必须删除链中的先前订单(谢谢 maxigs)。当然使用你最喜欢的范围名称。为我工作。

C:\Ruby200\lib\ruby\gems\2.0.0\gems\paper_trail-4.0.0.beta2\lib\paper_trail\frameworks\active_record\models\paper_trail\version.rb

于 2015-02-27T19:27:02.483 回答