我在Rails 4应用程序中使用了paper_trail gem,我想设置一个默认的排序顺序。 papertrail没有模型,只有控制器和初始化器。
我可以把它放在哪里?我必须为它创建一个模型吗?
default_scope order('created_at DESC')
答案 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