Что особенного о: условия => [A_Field в (.., .., ..)]?
-
26-09-2019 - |
Вопрос
Следующие наборы результатов хорошо работают с Will_Paginate:
Members.all(:limit => 5).paginate(:page => params[:page])
Members.all(:conditions => ["member_no < 6"]).paginate(:page => params[:page])
Members.all.paginate(:page => params[:page])
Ниже приведено:
Members.all(:conditions => ["member_no IN (?)", [1, 2, 3, 4, 5]]).paginate(:page => params[:page])
Почему второй запрос не работает хорошо с пагинальным? Спасибо!
Решение
# Paginate - это метод экземпляра, полученный на массиве и ActiveRecord :: Base. Вы действительно должны делать это таким образом:
Member.paginate(:page => params[:page], :limit => 5)
Member.paginate(:conditions => ["member_no < ?", 6], :page => params[:page])
Member.paginate(:page => params[:page])
Member.paginate(:conditions => {:member_no => (1..5)}, :page => params[:page])
Когда вы звоните # все, то # Pagaginate, что вы делаете, просит все Члены (все 1 000 000 из них), затем отбрасывают 99,999% из них, потому что вы только хотите первые 10. Это очень расточительно, чтобы сказать наименее.
Не связан с StackOverflow