我在 Rails 4 应用程序中使用 paper_trail gem,我想设置默认排序顺序。papertrail 没有模型,只有控制器和初始化程序。
我可以把它放在哪里?我必须为它创建一个模型吗?
default_scope order('created_at DESC')
我在 Rails 4 应用程序中使用 paper_trail gem,我想设置默认排序顺序。papertrail 没有模型,只有控制器和初始化程序。
我可以把它放在哪里?我必须为它创建一个模型吗?
default_scope order('created_at DESC')
好吧,我发现我可以在每个 do 块中使用 reverse 。
versions.reverse.each
因为我不需要比这更复杂的了,我想它现在就可以了。
还有重新排序命令。
http://apidock.com/rails/ActiveRecord/QueryMethods/reorder
versions.reorder('created_at DESC')
它将替换任何先前的订单,从而忽略 Papertrail 的预定义订单。
正确的方法是通过 unscope 删除先前的排序,然后根据需要进行设置:
http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-unscope
例如:
somethings.version.merge(PaperTrail::Version.unscope(:order)).order('created_at DESC')
这将为您提供正确排序的正确查询
在 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