您的用例不保证命名范围。您可以按如下方式编写常规查找器:
coll = paginate(:select => Constants::POST_FIELDS,
:conditions => ['status = ? AND expires < ?', 'a', DateTime.now],
:include => [{:poster => :poster_friends}, :category],
:order => 'posts.ratings DESC',
:per_page => Constants::LISTINGS_PER_PAGE,
:page => page)
The paginate
方法相当于all
,所以你不必提供:all
结果集范围限定符paginate
method.
时间值是在执行查询时计算的。这与命名范围不同,在命名范围中您必须使用 lambda 来达到相同的效果。
如果您需要使用named_scope,请执行以下操作:
named_scope :featured_all, lambda {{
:select => Constants::POST_FIELDS,
:conditions => ['status = ? AND expires < ?', 'a', DateTime.now],
:include => [{:poster => :poster_friends}, :category],
:order => 'posts.ratings DESC'
}}
现在您可以使用named_scope,如下所示
Post.feature_all.paginate(:per_page => Constants::LISTINGS_PER_PAGE,
:page => page)