为了简单起见,我避免使用枚举作为属性,而是存储字符串值。
我在数组中按预定顺序列出了所有可能的值:MyTypeEnum.names
我有一个 ActiveRecord::Relation 记录列表my_recs = MyModel.order(:my_type)
以 MyTypeEnum.names 中的值数组指定的顺序通过它们的 :my_type 属性值对 my_recs 中的记录进行排序的最佳方法是什么?
我可以试试这个:
my_recs = MyModel.order(:my_type)
ordered_recs = []
MyTypeEnum.names.each do |my_type_ordered|
ordered_recs << my_recs.where(:my_type => my_type_ordered)
end
但是我是否通过构建数组而不是使用 ActiveRecord::Relation 来降低性能?有没有更清洁的方法?(注意:我可能希望在排序方面具有灵活性,所以我不想假设订单是按照 MyTypeEnum.names 的顺序硬编码的)