2016-09-21 51 views
0

我在我的应用程序中使用了tiny_tdsactiverecord-sqlserver-adapter宝石。每次我打电话查询时,都会添加ORDER BY [object].[id]为什么Rails在我的ActiveRecord查询中添加ORDER BY?

School.limit(15)

EXEC sp_executesql N'SELECT [schools].* FROM [schools] WHERE [schools].[is_all_star_team] = 0 ORDER BY [schools].[id] ASC OFFSET 0 ROWS FETCH NEXT 15 ROWS ONLY'

当通过SSMS测试我的疑问,似乎有和没有通过是完成时间相当显著不同的顺序。我不知道如何删除它,虽然它是没有必要的。

回答

0

您是否碰巧在学校模型中设置了默认范围?如果是这样,这可能是罪魁祸首,因为它将应用于所有ActiveRecord调用,即使是简单的如限制。

+0

我呢,有没有办法让默认范围没有添加顺序? – daveomcd

+0

您的默认范围是否有订单方法调用?如果是这样的话,你可以这样做:School.unscoped.limit(15)忽略调用的范围。 [这是一个链接到无人机的文档](http://apidock.com/rails/ActiveRecord/Base/unscoped/class) – kylekeesling