我有一个带有以下范围的rails模型:
default_scope order('created_at ASC')
scope :published, order('created_at DESC').where(:draft=>false)
不幸的是,发布的范围不会按降序排序。
我写这个范围错了吗?
答案 0 :(得分:1)
我相信:published
范围不会覆盖默认排序,除非您使用reorder
:
http://guides.rubyonrails.org/active_record_querying.html#reorder
尝试
scope :published, where(:draft=>false).reorder('created_at DESC')
答案 1 :(得分:1)
您的默认范围仍会触发;您可以.reorder
,明确获取Foo.unscoped.published
,或使用with_exclusive_scope
。
有关详细信息,请参阅this SO question,其中包含更多信息的其他SO问题。