例如,我想知道用户有很多帖子。所以,我可以使用这个回复帖子:
@user.posts
但我不想让所有帖子都回来。我想限制结果,例如,前十名创建,或者可能按某些列排序。我怎么能这样做?谢谢。
答案 0 :(得分:1)
试试这个:
@user.posts(:limit => 10, :order => "created_at DESC")
答案 1 :(得分:1)
您始终可以创建一个通用范围来处理限制,例如将其放在初始化程序中:
class ActiveRecord::Base
named_scope :limit, lambda { |*limit| {
:limit => limit[0] || 10,
:offset => limit[1]
}}
end
这使限制查询变得容易:
# Default is limited to 10
@user.posts.limit
# Pass in a specific limit
@user.posts.limit(25)
# Pass in a specific limit and offset
@user.posts.limit(25, 25)
对于更强大的内容,您可能需要调查will_paginate。
答案 2 :(得分:0)
您应该查看has_many
关联的options。
您可以尝试这样的事情:
class User < ActiveRecord::Base
has_many :posts
has_many :top_ten_posts, { :class_name => "Post", :order => :some_rating_column, :limit => 10 }
end