Album.album_release_date
Ep.ep_release_date
Song.song_release_date
有没有一种简单的方法可以通过不同命名的日期时间属性对这个数组进行排序?
[album1, album2, album3, ep1, ep2, song1, song2, song3].order_by(the three differently named datetime attributes above, newest to oldest)
像这样的事情可以解决问题。
release_date_methods = {
Album => :album_release_date,
Ep => :ep_release_date,
Song => :song_release_date,
}
release_date_methods.default = :release_date
releasables.sort_by { |releasable| releasable.then(&release_date_methods[releasable.class]) }
我首先创建一个包含不同类的不同方法的哈希。然后使用可发布类获取该方法并将其作为块传递给releasable.then
.
但是,如果可能,最好更改方法名称。如果数组中的每个元素都响应:release_date
它们,则它们符合相同的接口。这将允许您简单地使用:
releasables.sort_by(&:release_date)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句