2010-10-26 31 views
0

以下結果集will_paginate工作得很好:有什麼特別的:conditions => [a_field IN(..,..,..)]?

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?謝謝!

+0

什麼不行?因爲它應該,儘管你做錯了。 – 2010-10-26 12:33:07

回答

0

#paginate是在Array和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]) 

當你調用#ALL然後#paginate,你在做什麼是要求所有名(其中所有1,000,000),然後丟棄它們的99.999% ,因爲你只想要前10名。這是非常浪費的,至少可以說。