范围ORDER BY覆盖一切

时间:2014-01-17 14:03:59

标签: ruby-on-rails ruby sql-order-by

我已经设置了default_scope来在我的应用程序中显示我的食谱。它应该默认显示所有“实时”并通过created_at对它们进行排序。

default_scope ->{ where(live: true).order("created_at DESC") }

这样可以正常工作,但是当我尝试显示我的食谱时,它们的订单数量相似(数据库中的另一列)

<% @recipes.order("likes_count desc").limit(16).each do |i| %>
  <%=link_to image_tag(i.image(:fixed), alt: "MUC", :class => "newest-recipes"), i %>
<% end %>

似乎不想工作。我认为default_scope会覆盖它吗?我可以更改范围的顺序,这将改变它,但如果我一起删除范围,订单仍然不想工作。

我可能在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

检查日志中的SQL查询(我经常tail -f log/development.log开发时)。您应该看到两个订单都在SQL查询的末尾,但默认范围始终是第一个。很确定它总是会覆盖它。