2010-12-28 14 views
3

Wie begrenzen wir die Anzahl der Datensätze, die ich mit dem folgenden Code, um nur 3 Datensätze ausgebe:Begrenzung Datensätze in einer Modellaktion

User.rb

def workouts_on_which_i_commented 
    comments.map{|x|x.workout}.uniq 
    end 

    def comment_stream 
    workouts_on_which_i_commented.map do |w| 
    w.comments 
    end.flatten.sort{|x,y| y.created_at <=> x.created_at} 
end 

html.erb Datei

<% current_user.comment_stream.each do |comment| %> 
    ... 
<% end %> 

UPDATE:

ich bin mit Rails 2.3.9

+0

Meine Antwort sollte funktionieren ... –

Antwort

6

Rails:

def workouts_on_which_i_commented 
    comments.limit(3).map{|x|x.workout}.uniq 
end 

Rails < 3:

Seit comments ist ein Array von Comment Objekte, können Sie einfach slice es:

def workouts_on_which_i_commented 
    comments[0..2].map{|x|x.workout}.uniq 
end 
+0

Ich bekomme hier einen Fehler. Ich hätte vielleicht erwähnen sollen, dass ich Rails 2.3.9 verwende. Hier ist der Fehler: 'undefinierte Methode' limit 'für # '. – bgadoci

+0

@bgadoci Sieht so aus, als ob Sie Rails 3 nicht verwenden. –

+0

Ha, haben wir zur gleichen Zeit kommentiert. – bgadoci

1

was comments ist in Ihrem workouts_on_which_i_commented könnte Comment.all(:order => 'created_at DESC', :limit => 3)

Es gibt einige Phantasie Schienen 3 Syntax sein, aber das ist für beide gut.

Oder wenn diese Methode in einem Modell ist, können Sie comments(:order => 'created_at DESC', :limit => 3) statt nur das tun, was in meinem ersten Satz beschrieben wurde. 3

Verwandte Themen