我有三个模型:paste
,snippet
和tutorial
。我想在一个列表中显示所有这些中最新的混合,如页面上所示:
<ul>
<li>Just a paste</li>
<li>The worst snippet ever (-10202343 kudos) (1 quadrillion comments)</li>
<li>Just another paste</li>
<li>Ruby on Rails tutorial (5 kudos) (2 comments)</li>
<li>Another snippet</li>
</ul>
按日期排序。问题是我想将这三个模型混合在一个列表中。所有模型都有特定的属性(例如snippet
和tutorial
都有标记,所有标题都有标题,tutorial
和snippet
都有标记,只有paste
有标记private boolean(所以不应该列出))。
在我看来,如何将这些不同的模型混合在一起? 感谢
答案 0 :(得分:3)
我会在数据库级解决这个问题,引入一个PublishedItem,然后PublishedItem指向Paste,Snippet或Tutorial。这将解决创建项目列表的问题:只需选择5个最新发布的项目。然后,您可以从已发布的项目中找到正确的项目并进行显示。
答案 1 :(得分:1)
获取控制器中“事件”或其他内容的列表
@events = Paste.find_all
@events << Snippet.find(:order => "votes", :limit => 1)
@events << Tutorial.find_all
然后在你看来
<%
@events.each do |event|
display_snippet(event) if event.class == Snippet
display_tutorial(event) if event.class == Tutorial
end
%>
有几种方法可以处理它的视图部分,但它看起来非常简单。在这个例子中,display_snippet和display_event是辅助方法,但使用partials可能更干净。