这个问题实际上是由 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") }
...但我想确保你没有定义它,因为如果你这样做,我宁愿使用你的范围而不是我自己的范围。
答案 0 :(得分:1)
不, AASM 没有提供相反的范围。我们已经考虑过这个问题,但最终决定反对,以免给范围空间带来不必要的负担。