我在events.rb中有以下代码。默认情况下,我将sort_order设置为updated_at_desc。
但是如果url有一个参数ride_id(http:// localhost:3000 / admin / events?ride_id = 3009)我需要根据created_at asc对其进行排序。
它不起作用。它仍然使用sort_order updated_at_desc获取结果。如何才能做到这一点。请帮忙。
以下代码正在使用我之前使用的活动管理员版本,但是当我将其更新为0.5.0时,我遇到了这个问题。
ActiveAdmin.register Event do
config.sort_order = 'updated_at_desc'
controller do
def scoped_collection
if params[:ride_id].present?
end_of_association_chain.select('events.*').where('events.booking_id = ?', params[:ride_id]).order('created_at asc')
else
end_of_association_chain.select('events.*')
end
end
end
端
我还使用了重新排序功能
end_of_association_chain.select('events.*').where('events.booking_id = ?', params[:ride_id]).reorder('created_at asc')
我仍然无法通过updated_at_desc覆盖默认排序。请帮忙。
答案 0 :(得分:2)
如果你在某处设置使用类似的东西:
default_scope order: '... DESC'
你可以使用
.unscoped
像这样:
end_of_association_chain.select('events.*').unscoped.where...
至少那是解决我类似问题的原因。
请注意以下帖子说明使用default_scope是一个坏主意,正是因为我/我们所经历的:
http://pragdave.blogs.pragprog.com/pragdave/2012/03/be-careful-using-default_scope-and-order.html
我希望这有帮助,
TheMahrvin