Я бы создал область на Посте, которая инкапсулировала бы и опубликованную и ограничение:
class Post < ActiveRecord::Base
scope :highlights, published.limit(4)
end
А затем используйте его в представлении так:
@categories.each do |category|
link_to category.title, category
category.posts.highlights.each do |post|
link_to post.title, post
end
end
Если вы хотите иметь возможность настраивать длину подсветки, вы можете изменить вызов видимости следующим образом:
scope :highlights lambda { |size| { published.limit(size) } }
, а затем используйте его как:
category.posts.highlights(5)