【发布时间】:2013-02-11 15:12:15
【问题描述】:
我想展示一个products 的画廊,其中包含既可出售又不可出售的产品。只有我希望待售的products 出现在列表的最前面,而非出售的对象将出现在列表的末尾。
对我来说,一个简单的方法是创建两个列表,然后将它们合并(一个 on_sale? 对象列表和一个 not on_sale? 对象列表):
available_products = []
sold_products = []
@products.each do |product|
if product.on_sale?
available_products << product
else
sold_products << product
end
end
。 . .但是对于我现有应用程序的结构,这将需要大量的重构,因为我的代码很奇怪(我失去了分页,我宁愿不重构)。如果有一种方法可以通过我的 product 模型的方法 on_sale? 返回一个布尔值来对现有对象列表进行排序会更容易。
是否有可能更优雅地遍历现有列表并根据 Rails 中的真假值对其进行排序?我之所以问,是因为其中隐藏了很多我不知道的东西框架/语言(红宝石),我想知道他们的工作是否在我之前完成。
【问题讨论】:
标签: ruby ruby-on-rails-3 sorting activerecord ruby-on-rails-3.2