Chr*_*ins 3 ruby-on-rails ruby-on-rails-3
我在轨道上的ruby中有两个对象数组.我想将它们组合起来并按两个不同的属性对它们进行排序.这可能吗?
一个是'Post'记录数组,一个是'Talk'记录数组.它们都需要按日期排序.但对于Post,相关属性是created_at,而对于Talk,它是date_given.这种令人头疼的问题让我考虑消除两种不同的模型,并用更灵活的Post模型替换它们.
任何想法将不胜感激.
我只是尝试了一些有用的东西,但我不确定它是否是处理这个问题的最佳方法.我只是为每个称为可排序日期的模型添加一个方法,并将其设置为我想要的.其中一个问题是created_at是一个Time,date_given是DateTime,所以我用这篇文章来处理Ruby中的DateTime和Time转换.
talk.rb
def sortable_date
date_given
end
post.rb
def sortable_date
created_at.to_datetime
end
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器 -
@posts = Post.order('created_at DESC').limit(3)
@talks = Talk.order('date_given DESC').limit(3)
@news = @posts + @talks
@news.sort_by! &:sortable_date
@news = @news[1..4]
Run Code Online (Sandbox Code Playgroud)
我只是在我的视图中渲染@news,它很好地传达了适当的部分.我喜欢一些反馈.
| 归档时间: |
|
| 查看次数: |
1272 次 |
| 最近记录: |