ruby或rails是否提供按指定顺序对字符串进行排序的方法?假设我具有以下优先级“严重,高,中,低”。
这些优先级不会经常更改(如果有的话)。我有一个带有优先级列的任务模型:
tasks
- id (integer)
- name (string)
- priority (string)
我想按优先级排列所有任务的数组。由于逻辑顺序不遵循字母顺序,因此无法简单地按优先级列进行排序:
Task.all(:order => :priority)
我所做的是创建一个Priority模型并定义了关联:Task Alles_to Priority。然后,在优先级表中,为每个优先级名称分配一个值,并按该值排序。有一个更好的方法吗?我宁愿根本没有优先级表,而声明一个PRIORITY常量(作为散列),或者只是在任务表中将优先级指定为字符串。
请您参考如下方法:
切换为Aaron所说的整数,那么您可能需要使用default_scope。
例如:
class Task < ActiveRecord::Base
default_scope :order => 'tasks.position' # assuming the column name is position
...
使用默认范围,您无需在任何find方法调用中指定排序顺序-任务将自动进行排序。