Skip to main content
 首页 » 编程设计

ruby-on-rails之Rails:记录的自定义排序

2025年02月15日31me-sa

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方法调用中指定排序顺序-任务将自动进行排序。