У меня ситуация, когда поведение существующего приложения меняется, и это вызывает у меня серьезную головную боль.
В моем приложении есть фотографии. Фотографии имеют статус: «партия», «очередь» или «завершена»
. Все существующие фотографии в приложении являются «полными».
В 99% случаев мне нужно показывать только полные фотографии, и во всей существующей кодовой базе мне нужно, чтобы каждый вызов Фото был ограничен только полными фотографиями.
Однако на экранах, связанных с загрузкой и классификацией фотографий, мне нужно иметь возможность довольно легко переопределить область действия по умолчанию, чтобы отображать группированные фотографии или фотографии в очереди.
Как и многим другим, мне нужно найти способ легко переопределить значение по умолчанию область действия в определенных ситуациях. Я посмотрел на эти вопросы ( 1 , 2 ), и они, похоже, не отвечают на то, что я ищу.
Код, который я хочу, чтобы работал, следующий:
class Photo < ActiveRecord::Base
...
default_scope where(:status=>'complete')
scope :batch, unscoped.where(:status=>'batch')
scope :queue, unscoped.where(:status=>'queue')
...
end
Однако это не работает. Я попытался обернуть методы области в лямбды, и это тоже не сработало.
Я понимаю, что default_scope поставляется с багажом, но если я не могу использовать его с переопределениями, я ищу добавление scope: complete ...
и мне приходится просматривать каждый вызов фотографий в моем существующем приложении и добавлять .complete
, чтобы фильтровать необработанные фотографии.
Как бы вы решили эту проблему?