1
aasm_column :status  

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

これらはモデルの状態であり、aasm_column の状態に従ってレコードを並べ替える必要があります。たとえば、5 つのレコードがあり、それらはすべて異なる状態になっています。ここで、すべてのレコードを取得する必要があり、最初は「未払い」、次に「有料」などのように並べ替える必要があります。それを達成するためのエレガントな方法がある場合。

4

1 に答える 1

0

aasm他のstate_machinegem は、レコードの構造を提供する以外には何もしません。私の知る限りでは、データに優先順位を付ける方法はありません (データを決定する方法のみstate)。

私はそれを処理することを検討することをお勧めしActiveRecordます(with 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 に答える