2016-08-02 110 views
0

我正在尝试检索21张最常浏览的照片的列表。我有这样的代码在我的控制器:Rails插入错误的`订单`语句

@photos = Photo.where("group_id = (?)", params[:target_id]).order('view_count ASC').limit(21) 

,并输出下面的SQL:

SELECT "photos".* FROM "photos" WHERE group_id = ('205') ORDER BY "photos"."timestamp" DESC, view_count ASC LIMIT 21 

哪里timestamp DESC查询来自何处,我如何摆脱它?照片按时间顺序而不是按照查看次数返回。

+0

检查,如果任何默认范围写的? – Sravan

回答

3

也许您在使用Photo模型时使用了default_scope。如果是这样的话,请尝试使用:

@photos = Photo.unscoped.where("group_id = (?)",params[:target_id]).order('view_count ASC').limit(21) 
2

如果你有default scope你应该使用unscoped覆盖或删除默认范围。

unscoped(): Returns a scope for the model without the previously set scopes.

default_scope(scope = nil) :- Use this macro in your model to set a default scope for all operations on the model.

@photos = Photo.unscoped.where("group_id = (?)", params[:target_id]).order('view_count ASC').limit(21) 

那么查询应该是,

SELECT "photos".* FROM "photos" WHERE group_id = ('205') ORDER BY "photos"."view_count" ASC LIMIT 21