获得AASM Gem在Rails中生成的范围的补充

时间:2015-02-12 16:14:24

标签: ruby-on-rails mongoid aasm

这个问题实际上是由 AASM 宝石开发者回答的。

我在我的rails app模型中使用 AASM gem( Mongoid )。我知道你会自动为每个已定义的状态生成范围。例如,有这个......

class Order
  include Mongoid::Document
  include Mongoid::Timestamps
  include AASM

  field :aasm_state

  aasm do
    state :pending, :initial => true
    state :received

    event :receive do
      transitions :from => :pending, :to => :received
    end
  end
end

...允许我这样做: Order.pending Order.received

我的问题非常简单,您是否也生成范围以获得给定状态的补充?类似于: Order.not_pending 以获取状态不同于'待定' 订单

我知道建立自己的范围很容易获得,就像这样...

scope :not_pending, ->{ ne(aasm_state: "pending") }

...但我想确保你没有定义它,因为如果你这样做,我宁愿使用你的范围而不是我自己的范围。

1 个答案:

答案 0 :(得分:1)

不, AASM 没有提供相反的范围。我们已经考虑过这个问题,但最终决定反对,以免给范围空间带来不必要的负担。