相关疑难解决方法(0)

是否可以根据单个对象对方法的响应对对象列表进行排序?

我想展示一个画廊,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
Run Code Online (Sandbox Code Playgroud)

...但是对于我现有应用程序的结构,由于我的代码奇怪,这需要过多的重构(我失去了我的分页,我宁愿不重构).如果有一种方法可以通过我的product模型方法对现有的对象列表进行排序,on_sale?这会返回一个布尔值.

是否可以更优雅地遍历现有列表并通过rails中的true或false值对其进行排序? 我只是问,因为有很多我不知道隐藏在这个框架/语言(ruby)中,我想知道他们是否在我之前完成了工作.

ruby sorting activerecord ruby-on-rails-3 ruby-on-rails-3.2

11
推荐指数
3
解决办法
2072
查看次数