您能否按照特定条目的字母顺序排序活动记录结果?

时间:2016-03-03 22:27:58

标签: ruby-on-rails rails-activerecord

假设您有一个Fruit模型,并且您有一个fruit_type列:

  • 香蕉
  • 苹果
  • 桔子
  • 其他
  • 菠萝

可以这样订购吗?:

  • 苹果
  • 香蕉
  • 桔子
  • 菠萝
  • 其他

这里的想法是我将构建一个表单选择,从纯粹的UI角度来看,我希望Other作为最后一个选项。我很确定我可以在视图中使用一些奇怪的代码将Other移到最后但理想情况下我想通过直接命令操作或者通过操纵正常结果从控制器返回order(:fruit_type)操作到moveOther到最后的行。

1 个答案:

答案 0 :(得分:-1)

在Ruby本身很容易做,看起来很简单。考虑到您的上一个选项名为“其他”:

other = array.detect { |item| item.name == 'Other' }
array_without_order = array.reject { |item| item.name == 'Other' }
final_array = array_without_order.sort_by(&:name).push(other)