2010-07-14 6 views
1

예를 들어, 사용자에게 많은 게시물이 있음을 알고 싶습니다. 따라서 다음을 사용하여 다시 게시 할 수 있습니다.Ruby on Rail에 객체 반환 결과를 제한 할 수 있습니까?

@user.posts 

그러나 모든 게시물을 다시 가져 오지 않으려 고합니다. 결과를 제한하고 싶습니다 (예 : 상위 10 개를 만들거나 일부 열로 정렬 할 수 있음). 그렇게하려면 어떻게해야합니까? 고맙습니다.

답변

1

당신은 항상 일반적인 범위를 만들 수 있습니다 :

# 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) 

더 확실한 내용은을 조사하는 것이 좋습니다..

0

당신은 has_many 연결에 사용할 수있는 options 살펴 보셔야합니다.

이 뭔가를 시도 할 수 :

class ActiveRecord::Base 
    named_scope :limit, lambda { |*limit| { 
    :limit => limit[0] || 10, 
    :offset => limit[1] 
    }} 
end 

이 쉽게 쿼리를 제한한다 : 같은 이니셜이 퍼팅으로, 한계를 처리 할 수 ​​

class User < ActiveRecord::Base 
    has_many :posts 
    has_many :top_ten_posts, { :class_name => "Post", :order => :some_rating_column, :limit => 10 } 
end 
+1

언젠가, 나는 모두를 원한다. 처음에는 10을 원한다. 언젠가는 처음이다. 20. 내가 원하는 결과를 얻으려면 "필터"를 통과시킬 수 있을까 ?? – Tattat

+0

@Tattat : 명명 된 범위 개념과 유사한 여러 연관을 사용할 수 있습니다. – jigfox

관련 문제