На всякий случай, если кто-то все еще ищет это, при определении state_machine добавляются следующие методы:
class Vehicle < ActiveRecord::Base
named_scope :with_states, lambda {|*states| {:conditions => {:state => states}}}
# with_states also aliased to with_state
named_scope :without_states, lambda {|*states| {:conditions => ['state NOT IN (?)', states]}}
# without_states also aliased to without_state
end
# to use this:
Vehicle.with_state(:parked)
Мне нравится использовать это, потому что никогда не будет конфликта с именем состояния.Вы можете найти больше информации на странице интеграции state_machine ActiveRecord .
Бонус в том, что он позволяет передавать массив, поэтому я часто делаю что-то вроде:
scope :cancelled, lambda { with_state([:cancelled_by_user, :cancelled_by_staff]) }