2016-08-02 2 views
0

私は21件の写真のリストを取得しようとしています。私は私のコントローラでこのコードがあります。Railsが誤った `order`ステートメントを挿入しています

@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 
関連する問題