1
aasm_column :status  

aasm do
  state :unpaid, :initial => true
  state :paid
  state :refund
  state :closed
  state :cancelled
...

这些是模型中的状态,我需要根据 aasm_column 的状态对记录进行排序。例如,我有五条记录,它们都有不同的状态。现在,我需要获取所有记录,它们应该首先被排序为“未付”,然后是“支付”,等等。如果有一种优雅的方式来实现它。

4

1 回答 1

0

aasm除了为您的记录提供结构之外,其他state_machinegem 不会做任何事情。据我所知,他们没有任何方法来确定数据的优先级(只有一种方法来确定它的state)。

我建议考虑ActiveRecord处理它(使用order):

#app/models/your_model.rb
Class Model < ActiveRecord::Base
    scope :prioritize, -> { order(unpaid: :desc, paid: :asc) }
end

这将允许您调用:

def index
    @items = Model.where(values: here).prioritize
end

--

当然,order方法需要工作,但我希望你明白吗?如果你想让我重构,我可以重构

于 2014-05-24T07:32:07.613 回答