У меня есть следующая область видимости для моего класса под названием Collection
:
scope :with_missing_coins, joins(:coins).where("coins.is_missing = ?", true)
Я могу запустить Collection.with_missing_coins.count
и получить результат обратно - он отлично работает!
В настоящее время, если я хочу получить коллекции без недостающих монет, я добавляю еще одну область видимости:
scope :without_missing_coins, joins(:coins).where("coins.is_missing = ?", false)
Я обнаружил, что пишу много этих «противоположных» областей. Можно ли получить противоположность области видимости, не жертвуя удобочитаемостью или не прибегая к лямбда / методу (который принимает в качестве параметра true
или false
)?
Примерно так:
Collection.!with_missing_coins
Обновление . Теперь направляющие 6 добавляют удобные и изящные отрицательные перечислимые методы.
# All inactive devices
# Before
Device.where.not(status: :active)
#After
Device.not_active
Сообщение в блоге здесь