2
在Rails 3应用程序中,我运行了一个有点复杂的group_by,并且很好奇,如果我可以将它隐藏在其他地方,就像可以隐藏范围内的ActiveRecord条件一样。我意识到GROUP_BY是可枚举的操作,因此示波器在这里不适用,但我的问题是,如果有一个比较的方式来创建一个简写本的方式:我怎样才能在Ruby中隐藏复杂的group_by子句?
@launches_and_finales = Show.launches_and_finales.sort_by { |s|
(s.run_starts_on &&
((Date.today - 3.days)..(Date.today + 3.days)) === s.run_starts_on) ?
s.run_starts_on : s.run_ends_on }
附注:我知道3.days.ago..3.days.from_now
会更简洁,但有一个bug in Ruby 1.9.2,当我使用它时会触发无限循环。
我从来没有想过在模型层做更复杂的逻辑。我必须在这里只考虑范围和限制,但我当然可以添加一个全新的方法。我不认为2会做到这一点,因为它是我所追求的更复杂的群体,而不仅仅是过滤器。 – 2010-10-28 21:07:25