2014-12-17 2 views
0

Я пытаюсь создать запрос с использованием ActiveRecord, и я обнаружил, что выполнение limit() и/или where() после того, как order() не работает.rails activerecord limit после заказа

Вот мой код:

candidates = Candidate.order("created_at desc") 
puts candidates.to_sql 
#prints SELECT "candidates".* FROM "candidates" ORDER BY created_at desc 
candidates.limit(20) 
puts candidates.to_sql 
#prints SELECT "candidates".* FROM "candidates" ORDER BY created_at desc 
candidates.where("first_name = ?", "Josh") 
puts candidates.to_sql 
#prints SELECT "candidates".* FROM "candidates" ORDER BY created_at desc 

Я использую рельсы и ActiveRecord (4.1.1)

+0

Кстати, так как вы используете Rails 4, вы можете использовать более чистый синтаксис: 'Candidate.order (created_at:: DESC)' и 'candidates.where (first_name: "Джош") '. – Mohamad

ответ

1

Я считаю, что это работает, как вы Ожидаем, но результатом будет новый масштаб, а не корректировка существующего. то есть попробовать что-то вроде этого:

candidates = Candidate.order("created_at desc") 
puts candidates.to_sql 
#prints SELECT "candidates".* FROM "candidates" ORDER BY created_at desc 
candidates = candidates.limit(20) 
puts candidates.to_sql 
0

Попробуйте сцепления их:

candidates = Candidate.where("first_name = ?", "Josh").limit(20).order("created_at desc")

+0

i can not chain them, as im tyring для динамического создания запроса –

+0

В этом случае ответ @ keyzee является правильным. –

Смежные вопросы