为了简单起见,我避免使用属性的枚举,而是存储字符串值。按预定列表排序记录的最佳方法
我有所有可能的值在阵列中的一个预定的顺序列表:MyTypeEnum.names
而且我有记录在my_recs = MyModel.order(:my_type)
什么是订单记录的最好办法一个ActiveRecord ::关系列表在my_recs中通过my_type属性值按MyTypeEnum.names中值的数组指定的顺序排序?
我可以试试这个:
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 ::关系查杀性能?有更清洁的方法吗? (注意:我可能希望在订购时具有灵活性,所以我不想假定订单按照MyTypeEnum.names的顺序如上所述进行硬编码)