带papertrail的默认排序版本

时间:2014-04-23 17:52:55

标签: ruby-on-rails ruby-on-rails-4 paper-trail-gem

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

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

default_scope order('created_at DESC')

4 个答案:

答案 0 :(得分:6)

我发现我可以在每个阻止中使用反向。

versions.reverse.each

因为我不需要比这更复杂的东西,我想它现在会做的。

答案 1 :(得分:4)

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

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

例如:

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

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

答案 2 :(得分:1)

还有重新排序命令。

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

versions.reorder('created_at DESC')

它将取代任何先前的排序,从而忽略Papertrail的预定义顺序。

答案 3 :(得分:0)

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

scope :by_date_desc, lambda { unscope(:order).order('created_at DESC') }
删除链中的先前订单所需的

unscope (谢谢maxigs)。当然使用您最喜欢的范围名称。为我工作。

C:\ Ruby200 \ lib中\红宝石\宝石\ 2.0.0 \宝石\ paper_trail-4.0.0.beta2 \ lib中\ paper_trail \框架\ active_record \模型\ paper_trail \ version.rb