aasm_column :status
aasm do
state :unpaid, :initial => true
state :paid
state :refund
state :closed
state :cancelled
...
这些是模型中的状态,我需要根据aasm_column的状态对记录进行排序。例如,我有五个记录,它们都有不同的状态。现在,我需要获取所有记录,它们应该首先排序为“未付”,然后是“付费”,等等。如果有一种优雅的方式来实现它。
答案 0 :(得分:0)
aasm
和其他state_machine
宝石除了为您的记录提供结构外,不做任何其他事情。据我所知,他们没有办法确定数据的优先级(只有一种方法可以确定其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
方法需要工作,但我希望你明白这个想法?如果你想要我,我可以重构