Ограничение записей в действии модели - PullRequest
3 голосов
/ 29 декабря 2010

Как ограничить количество выводимых записей с помощью следующего кода только тремя записями:

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 file

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

ОБНОВЛЕНИЕ:

Я использую Rails 2.3.9

Ответы [ 2 ]

6 голосов
/ 29 декабря 2010

Рельсы 3:

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

Рельсы <3: </p>

Поскольку comments - это Array из Comment объектов, вы можете просто slice it:

def workouts_on_which_i_commented
  comments[0..2].map{|x|x.workout}.uniq
end
1 голос
/ 29 декабря 2010

независимо от того, comments находится в вашем workouts_on_which_i_commented, может быть Comment.all(:order => 'created_at DESC', :limit => 3)

Существует также некоторый причудливый синтаксис rails 3, но это хорошо для любого из них.

Или, если этот метод используется в модели, вы можете просто сделать comments(:order => 'created_at DESC', :limit => 3) вместо того, что было описано в моем первом предложении.

...