我有两个模型,Article
和Comment
,具有一对多的关系。
我的观点如下:
<% @articles.each do |article| %>
<% article.comments.each do |comment| %>
some content
<% end %>
<% end %>
从控制器过滤@articles
很容易,例如:
@articles = Article.order('created_at asc').last(4)
我可以轻松过滤我的观点中的评论:
<% @articles.each do |article| %>
<% article.comments.order('created_at asc').last(4).each do |comment| %>
some content
<% end %>
<% end %>
但我不想在我看来放置order('created_at asc').last(4)
逻辑。如何从控制器中过滤文章的评论?
答案 0 :(得分:3)
您可以在模型中执行类似的操作
Class Article < ActiveRecord::Base
has_many :comments, -> { order 'created_at' } do
def recent
limit(4)
end
end
end
然后在视图中使用如下
@articles.each do |article|
article.comments.recent.each do |comment|
stuff
end
end
来源:https://stackoverflow.com/a/15284499/2511498,支持Shane